我的程序在执行过程中找不到我的共享库。
我就是这么编译的:
//shared library fct
g++ -c -fpic fct.cpp
g++ -shared fct.o -o libfct.so
//my program
g++ main.cpp -L/home/user/shared_library/ -lfct -I/home/user/shared_library/ -o main当我试图运行该程序时,它会给出以下错误消息:
./main: error while loading shared libraries: libfct.so: cannot open shared object file: No such file or directory这是我的源文件:
main.cpp:
#include <iostream>
#include "fct.h"
int main()
{
fct();
return 0;
}fct.h:
#ifndef FCT_HEADER_INCLUDED
#define FCT_HEADER_INCLUDED
#include <iostream>
void fct();
#endiffct.cpp:
#include "fct.h"
void fct()
{
std::cout << "fct() was called!\n";
}发布于 2021-08-05 16:04:49
在编译时和运行时都需要两次共享库路径。将库路径传递给编译器并不能保证链接器能够找到它。对于临时解决方案,可以将home/user/shared_library添加到LD_LIBRARY_PATH环境变量(在Linux &macOS上)。为了获得更持久的解决方案,您应该将其安装在default dynamic linker search path上的一个目录中。
https://stackoverflow.com/questions/68669802
复制相似问题