2014-04-21 99 views
1

上下文如下:我试图从Linux Mint中的源代码编译InkscapeLite。在编译结束,最后一个命令是(一些的.o和.a文件与“...”所取代,因为该命令是很长):GCC编译器错误:无法识别选项'--export-dynamic'

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或者来源中存在一些不同的问题?

顺便说一句,同样的程序在Puppy Linux发行版中正常工作。

+0

有一些问题在其他地方。基于动态链接,它只会输出比您需要的更多的符号。这对潜在的调试和/或dlopen/sym/close很有用。 – lpapp

+0

因此,我必须删除'--export-dynamic'并在其他地方搜索问题?为什么'-export-dynamic'工作呢? – johnfound

+0

不,保持-expotr动态,并继续寻找另一个问题。 – lpapp

回答

3

看来是建筑脚本问题。 --export-dynamic是一个链接器ld在Unix中)选项,这可能对你很有用,但它不是gcc前端选项。我看到的所有GCC版本都有-rdynamic标志,导致--export-dynamic传递给链接器。所以你可以用你自己的方式来解决这个问题(例如,简单地尝试在makefile/etc中重命名该选项)和/或向维护者报告问题。

2

使用gcc -rdynamic-Wl,--export-dynamic(在-Wl告诉下一子选项发送到ld ...)

相关问题