gcc10需要一个gcc8不需要用于链接的额外的.so文件

w1e3prcc  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(112)

我正在用gcc 10编译我的C++代码,链接器想要一个libspeckle.so我没有的www.example.com文件。然而,使用gcc 8或gcc 9以及相同的编译器和链接器标志编译相同的程序,它不需要libspeckle.so文件进行链接,它工作得很好。
对于像我这样的初学者来说,这是非常令人困惑的,因为我不能用任何现代编译器执行/链接我的程序,我试过gcc 10,gcc 11,clang 13,clang 14,clang 15,但除了gcc 8和gcc 9编译器外,没有任何工作。
对于连接器,我也尝试了ld,gold,ldd和mold,没有区别。
我试着使用-Wl,--unresolved-symbols=ignore-in-shared-libs链接器标志,但是我无法执行我的程序。
谁能帮我理解一下。

"generator": "Ninja Multi-Config",
"environment": {
    "COMPILER": "gcc11",
    "cmakeBuildOptions": "-- -v",
    "CC": "gcc-11",
    "CXX": "g++-11",
    "ARCHITECTURE": "x64",
    "LDFLAGS": "-g",
    "CFLAGS": "-fsanitize=address -fprofile-arcs -ftest-coverage -m64 -g -Wall -Wextra -pedantic -fPIC",
    "CXXFLAGS": "-fsanitize=address -fprofile-arcs -ftest-coverage -m64 -g -Wall -Wextra -pedantic -fPIC"
}

字符串
ldd from executable compiled with gcc8 =>

ldd ./UnitTest | grep -i libspeckle


ldd from executable compiled with gcc11 =>

ldd ./UnitTest | grep -i libspeckle
        libspeckle.so.1 => not found

aiqt4smr

aiqt4smr1#

您可以使用-fobjc-gc标志来解决此问题。这应该能解决问题。
您可以检查标志here

相关问题