我的程序在执行期间找不到我的共享库
My program cannot find my shared library during execution
我的程序在执行过程中找不到我的共享库。
这就是我编译所有内容的方式:
//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();
#endif
fct.cpp:
#include "fct.h"
void fct()
{
std::cout << "fct() was called!\n";
}
编译时和运行时两次需要共享库路径。将库路径传递给编译器并不能保证链接器能够找到它。对于临时解决方案,您可以将 home/user/shared_library
添加到 LD_LIBRARY_PATH
环境变量(在 Linux 和 macOS 上)。对于更永久的解决方案,您应该将其安装在 default dynamic linker search path.
上的目录中
我的程序在执行过程中找不到我的共享库。
这就是我编译所有内容的方式:
//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();
#endif
fct.cpp:
#include "fct.h"
void fct()
{
std::cout << "fct() was called!\n";
}
编译时和运行时两次需要共享库路径。将库路径传递给编译器并不能保证链接器能够找到它。对于临时解决方案,您可以将 home/user/shared_library
添加到 LD_LIBRARY_PATH
环境变量(在 Linux 和 macOS 上)。对于更永久的解决方案,您应该将其安装在 default dynamic linker search path.