我正在用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
型
1条答案
按热度按时间aiqt4smr1#
您可以使用
-fobjc-gc
标志来解决此问题。这应该能解决问题。您可以检查标志here