簡體   English   中英

警告:在編譯為.so時找不到條目符號_start-

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM