我应该使用数据分析程序进行物理实验.我不能让它编译.
代码很旧,与我能找到的当前GCC版本不兼容.为了让事情更加节省时间,我从一个修改了所有makefile的人那里获得了代码,以便在Mac上编译.我没有C++经验,但是有了man-pages,Google和耐心,我已经修复了很多错误,但是我坚持这个,即使经过一周的尝试和谷歌搜索.
我相信相关的错误信息如下:
/usr/bin/ld: error in /home/daniel/skola/exjobb/miniballscripts
/lib/libCommandLineInterface.so(.eh_frame); no .eh_frame_hdr table will be created.`
Run Code Online (Sandbox Code Playgroud)
可能是什么原因,可以采取什么补救措施?
libCommandLineInterface.so 我之前编译过,没有任何明显的错误消息:
$ make
g++ -g2 -O2 -I./ -c CommandLineInterface.cc -o CommandLineInterface.o
g++ -g -Wl -o /home/daniel/skola/exjobb/miniballscripts/lib/libCommandLineInterface.so
CommandLineInterface.o -lm -L/home/daniel/skola/exjobb/miniballscripts/lib -lgcc -lc
Done
Run Code Online (Sandbox Code Playgroud)
我的g ++ - 版本是g++ (Ubuntu 4.4.3-4ubuntu5) 4.4.3,amd64.
正如我所说,我没有使用C++的经验,所以也许我天真的Makefile修改已经破坏了一些东西.我缺乏经验也使我不知道需要哪些其他信息来帮助我,但我很乐意回答.
我在Inkscape中制作了一个徽标.为了学习我想通过SVG中的动画支持在徽标旋转中制作轮子形状.
实现旋转很容易,但我很难指定正确的旋转轴.形状是一个齿轮,我希望它围绕它的中心旋转.试验和错误给出了xy坐标(47.1275,1004.17)(其组件奇怪地不对称,但我猜这与Inkscape应用的转换矩阵有关)是一个很好的近似(见下面的animateTransform标签),但我怎么会从第一原则得到这个?
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 321.281 150.799" xmlns:dc="http://purl.org/dc/elements/1.1/">
<g transform="translate(-9.9178912,-891.57237)">
<g transform="matrix(1.9522781,0,0,1.9522781,4.6434311,-1008.1558)">
<animateTransform attributeType="xml" attributeName="transform" type="rotate" from="0 47.1275 1004.17" to="45 47.1275 1004.17" dur="2s" fill="freeze" additive="sum" repeatCount="indefinite" />
<g transform="matrix(0.65043772,0,0,0.65043772,-143.67477,980.4256)" stroke="#666" stroke-miterlimit="4" stroke-dasharray="none" stroke-width="7.68713093" fill="none">
<path stroke-linejoin="miter" d="m293.404-3.51576c-2.73916,0-5.41514,0.287192-8,0.8125v6.1875c-3.47484,0.838872-6.7198,2.18462-9.6875,4l-4.375-4.375c-2.24264,1.48612-4.29226,3.22977-6.1875,5.125s-3.63888,3.94486-5.125,6.1875l4.375,4.375c-1.81538,2.9677-3.16112,6.21265-4,9.6875h-6.1875c-0.5253,2.58486-0.8125,5.26083-0.8125,8s0.2872,5.41515,0.8125,8h6.1875c0.83888,3.47485,2.18462,6.7198,4,9.6875l-4.375,4.375c1.48612,2.24264,3.22976,4.29227,5.125,6.1875s3.94486,3.63888,6.1875,5.125l4.375-4.375c2.9677,1.81538,6.21266,3.16113,9.6875,4v6.1875c2.58486,0.525308,5.26082,0.8125,8,0.8125,2.73916,0,5.41514-0.287192,8-0.8125v-6.1875c3.47484-0.838872,6.7198-2.18462,9.6875-4l4.375,4.375c2.24264-1.48612,4.29226-3.22977,6.1875-5.125s3.63888-3.94486,5.125-6.1875l-4.375-4.375c1.81538-2.9677,3.16112-6.21266,4-9.6875h6.1875c0.5253-2.58485,0.8125-5.26083,0.8125-8s-0.2872-5.41515-0.8125-8h-6.1875c-0.83888-3.47485-2.18462-6.7198-4-9.6875l4.375-4.375c-1.48612-2.24264-3.22976-4.29227-5.125-6.1875s-3.94486-3.63888-6.1875-5.125l-4.375,4.375c-2.9677-1.81538-6.21266-3.16113-9.6875-4v-6.1875c-2.58486-0.525308-5.26084-0.8125-8-0.8125z" stroke-dashoffset="162" stroke="#666" stroke-linecap="butt" stroke-miterlimit="4" stroke-dasharray="none" stroke-width="7.68713093" fill="none"/>
</g>
</g>
</g>
</svg>
Run Code Online (Sandbox Code Playgroud)
根据我在规范中的内容,我会说应用的转换矩阵是
1.9522781 0 4.6434311
0 1.9522781 -1008.1558
0 0 1
Run Code Online (Sandbox Code Playgroud)
和
0.65043772 0 -143.67477
0 0.65043772 980.4256
0 0 1
Run Code Online (Sandbox Code Playgroud)
它们是否(-9.9178912,-891.57237,0)在翻译转换后应用于xyz坐标?
我想上面的正确分析会让我得到所描述路径的左上角,或者可能是第一个手柄的坐标.在那之后,是否必须解析路径来决定边界框,从而决定路径的中心(因为它涉及一个有点圆形的对象)?
这是不是尝试在自由创建的形状上手动制作动画的一课吗?
在一个小测试文件中,我可以运行
#!/usr/bin/perl
use warnings;
use strict;
use open qw{:utf8 :std};
use XML::Simple;
my @cmdline = ("hg", "log", "-v", "--style", "xml");
open my $xml, "@cmdline |";
my $xmllog = XMLin($xml, ForceArray => ['logentry', 'parent', 'copy', 'path']);
foreach my $rev (@{$xmllog->{logentry}}) {
#do stuff
}
Run Code Online (Sandbox Code Playgroud)
它工作正常.当我在一个更大的程序中运行相同的代码(使用相同的XML输入)时,它终止于
*** glibc detected *** /usr/bin/perl: malloc(): memory corruption: 0x0a40e308 ***
Run Code Online (Sandbox Code Playgroud)
但是,如果我做交换
#open my $xml, "@cmdline |";
my $xml = `@cmdline`;
Run Code Online (Sandbox Code Playgroud)
然后它工作(在两个文件中),所以这更像是一个好奇的问题,而不是一个真正的问题.
Debian Sid:Perl 5.12.4-1.
(这是我第一次遇到Perl,所以不要过多地考虑我应该对语言的了解.我只是潜入现有代码.)
(较大的程序是ikiwiki,所以代码不是秘密,但我不知道在哪里寻找麻烦,并且由于实际原因我不能在这篇文章中包含所有代码.这涉及Mercurial后端.)
根据cjm的建议,我添加了print …