链接到我的主目录中的共享对象文件
Linking with a shared object file in my home directory
我有一个共享的对象文件,我想链接。该文件当前位于我的主目录中——它是而不是位于像/usr/lib
这样的普通库目录中,因为我只是在进行测试,还没有将其部署到/usr/lib
的权限。
所以,我试着编译并链接它,如下所示:
g++ test.cpp -o test -L. mylib.so -g3
编译器没有返回错误,但是,当我运行时,我得到了错误:
./test: error while loading shared libraries: mylib.so: cannot open shared object file: No such file or directory
好吧,所以经过一些谷歌搜索,我意识到问题是我的库运行路径不包括我的主目录,所以我需要在编译时传递一个rpath
选项到链接器。好的,我输入:
g++ test.cpp -o test -Wl,-rpath,. -L. mylib.so -g3
这个编译得很好,但是当我运行这个程序时,它会立即发现错误。
因此,我使用gdb
来查看发生了什么:
(gdb) run
Starting program: ~/test
warning: no loadable sections found in added symbol-file system-supplied DSO at 0x2aaaaaaab000
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Program received signal SIGSEGV, Segmentation fault.
回溯显示不出有用的信息。只有一个stackframe:
#0 0x0000000000400808 in main () at test.cpp:13
所以,我敢肯定这可能是我编译和链接的方式有问题,但谷歌搜索这个问题并没有出现太多的答案。
出现" no loadable sections found ...
"错误信息的可能原因是什么?这是否表示运行时环境无法找到某些库?.so
文件是使用-fPIC
和-shared
标志编译的。
"no loadable sections found…"错误信息的可能原因是什么?
这是一个可以忽略的GDB警告。
这是否表示运行时环境无法找到某些库?
相反,它表明您的程序启动良好,并运行到test.cpp
的第13行(这早于初始化),然后崩溃。
遗憾的是,您没有显示第13行是什么样子,因此无法提供更多帮助。
相关文章:
- 处理影响跨不同线程共享对象的定时回调的最佳方法是什么?
- 如何创建一个共享对象与另一个.所以在Cmake
- 内联函数的函数本地静态对象是否在共享对象文件之间共享?
- 在 Android Studio 中使用 C++ 共享对象时出现问题
- 共享对象、符号、C/C++ 库链接和加载
- ./main:加载共享库时出错:libopencv_highgui.so.4.0:无法打开共享对象文件:没有这样的文件或
- 在 win32 上生成 R 包:无法加载共享对象 (.dll)
- 共享对象中的符号
- sf::Windows上的音乐:api-ms-win-crt-locale-l1-1-0.dll:无法打开共享对象文件
- C++ 为什么要级联共享对象链接
- 加载共享库时出错:libbsoncxx.so._noabi:无法打开共享对象文件:没有此类文件或目录
- 从单个.cpp构建共享对象
- 与 32 位共享对象的链接问题
- 卸载共享对象(.so 文件)在 C++ 中用 dlopen() 打开
- 运行程序时找不到共享对象库,但在编译过程中链接了它
- 错误:无法打开共享对象文件:没有此类文件或目录
- Qt 创建器:将库移动到 subdir 后无法打开共享对象文件
- 共享对象中的符号名称与文件中.cpp函数不同
- C++:在共享对象中调用抽象基类构造函数/未定义的符号
- Cython:共享对象中未定义的符号