我的程序在执行期间找不到我的共享库

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.

上的目录中