2014-04-21 285 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 ...)

相關問題