更新:问题已解决。该库是为 Armv7a CPU 设计的,但它是“软浮动”而不是“硬浮动”。好像我的机器是 HF 而不是 SF 兼容
我的程序依赖于一个名为 libMyLib.so 的外部构建 .so 库。当我这样编译程序时:
$ g++ -std=c++11 main.cpp -o run -pthread
Run Code Online (Sandbox Code Playgroud)
它报告有很多未定义的引用,显然是因为我在编译时没有包含 libMyLib.so。所以编译器知道他需要什么来编译程序。当我像这样编译程序时:
$ g++ -std=c++11 main.cpp -o run -pthread -lMyLib
Run Code Online (Sandbox Code Playgroud)
它不会报告任何错误并创建文件“运行”。请注意,libMyLib.so 已经在 /usr/local/lib 中,并且在编译时它看起来像是链接的,因为现在定义了引用并创建了“运行”文件。但是当我运行文件时,会发生这种情况:
$ ./run
./run: error while loading shared libraries: libMyLib.so: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我已经检查过 ldd ,它显示了这个:
$ ldd run
...
libMyLib.so => not found
...
Run Code Online (Sandbox Code Playgroud)
所以 ldd 在执行时找不到库,但在编译时找到了。我对 Linux 和链接库很陌生,所以我不知道该怎么做。
此外,在 .so 文件上运行 ldd 会返回:
$ ldd /usr/local/lib/libMyLib.so
not a …Run Code Online (Sandbox Code Playgroud)