2013-07-30 203 views
2

如何讓GCC使用靜態庫而不是動態庫?通常情況下,您將.a文件添加到鏈接器參數。但是libssp鏈接是由-fstack-protector選項觸發的。如果編譯器找到一個而不是靜態庫,編譯器就更喜歡鏈接到共享庫。如何靜態gcc鏈接libssp?

如果我嘗試在沒有libssp.so的系統上運行生成的程序,程序將無法運行。

(系統升級上構建一些機器後,測試系統上了年紀的盒子搞砸了)

+0

這可能是相關的:http://stackoverflow.com/questions/1348895/how-do-i-get-c-programs-to-link-with-gccs-stack-protector-feature-on-aix –

回答

5

是否

gcc -static static.c -o static -fstack-protector-all 

gcc -static -lssp static.c -o static -fstack-protector-all 

工作?你可以在生成的二進制文件上運行ldd嗎?

您使用的是哪個版本的gcc?