上下文如下:我正在尝试从Linux Mint中的源代码编译InkscapeLite。在编译结束时,最后一个命令是(某些.o和.a文件被替换为“...
”,因为命令很长):
gcc -g -O2 -o inkscape --export-dynamic inkscape.o inkscape-stock.o ... ./.libs/libinkscape.al dialogs/libspdialogs.a ... -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 /usr/lib/i386-linux-gnu/libcairo.so -lpango-1.0 -lfontconfig -lgobject-2.0 -lglib-2.0 /usr/lib/i386-linux-gnu/libart_lgpl_2.so /usr/lib/i386-linux-gnu/libxml2.so /usr/lib/i386-linux-gnu/libpopt.so -lpng -lXft -L/usr/lib/i386-linux-gnu /usr/lib/i386-linux-gnu/libfreetype.so -lz -Wl,--rpath -Wl,/usr/lib/i386-linux-gnu -Wl,--rpath -Wl,/usr/lib/i386-linux-gnu
失败并显示错误:gcc: error: unrecognized option '--export-dynamic'
我所做的是将--export-dynamic
替换为-export-dynamic
,仅用于测试(注意,我不是C / C ++程序员,对GCC或任何其他C编译器一无所知)并执行命令在控制台中手动。编译结束没有错误,程序工作,但它几乎没有错过所有工具栏和菜单图标(只有一些常见的图标作为打开/保存/复制/粘贴...)
是否因为此问题选项--export-dynamic
或源中存在一些不同的问题?
BTW,相同的程序在Puppy Linux发行版中正常工作。
答案 0 :(得分:3)
似乎构建脚本问题。 --export-dynamic
是链接器(Unix中的ld
)选项,在您的情况下可能很有用,但它不是gcc前端选项。我看到的所有GCC版本都有-rdynamic
标志,这会导致--export-dynamic
传递给链接器。因此,您可以使用自己的方法解决此问题(例如,只需尝试重命名makefile / etc中的选项)和/或将问题报告给维护者。
答案 1 :(得分:3)
使用gcc -rdynamic
或-Wl,--export-dynamic
(-Wl
告诉将下一个子选项发送到ld
...)