[英]“ld: warning: cannot find entry symbol _start; defaulting to 0000000000401000” with custom *.o file
[英]warning: cannot find entry symbol _start - while compiling to .so
您好,我正在運行Linux Ubuntu,並且正在使用icpc(英特爾編譯器)進行編譯,我想獲取一個共享庫,因此我使用了以下命令:
icpc -o myShared.so -std=c++11 -shared -DSTDC_HEADERS -D __cplusplus=201103L -fpermissive -DPT_XX_DEV -fexceptions -frtti -DANDROID -w -fstack-protector -fPIE -fPIC -pie -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -I/home/admins/aaa/include -I/home/admins/bbb/include a.cpp b.cpp c.cpp -lpthread -L./../../static_libs -lmyStatic
我收到警告:
ld: warning: cannot find entry symbol _start; defaulting to 0000000000007040
我在先前的主題中閱讀了有關此警告的信息,發現該警告與程序的入口點有關,但是據我所知-共享庫中不應有入口點。
是否有人知道如何解決?
非常感謝你!
在編譯過程中添加以下行。 這可能會解決您的問題。
-lc --entry main
-lc告訴編譯器使用標准C庫,--entry main告訴編譯器使用“ main”地址作為應用程序的入口點。
注意:盡管我不熟悉intel編譯器,但還是嘗試了一下。
刪除-fPIE和-pie標志解決了我的問題。 嘗試創建共享庫時,不應使用-pie,並且在大多數情況下也不應使用-fPIE。
使用Intel編譯器編譯為目標文件,然后使用gcc
鏈接目標文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.