当我希望从没有包的源代码中编译 Linux 中的程序时,通常需要安装比标准存储库提供的更高版本的库。我更喜欢从源代码编译那些更新的库,而不是使用外部存储库。
如何配置->make->sudo make 安装额外需要的库和最终程序,以便所有更新的库和新程序都安装在我的主目录中的单独文件夹中,以便只有新程序使用这些库?
当我希望从没有包的源代码中编译 Linux 中的程序时,通常需要安装比标准存储库提供的更高版本的库。我更喜欢从源代码编译那些更新的库,而不是使用外部存储库。
如何配置->make->sudo make 安装额外需要的库和最终程序,以便所有更新的库和新程序都安装在我的主目录中的单独文件夹中,以便只有新程序使用这些库?
首先编译库:
./configure --prefix=$HOME/myapp
make
make install
请注意,由于您要安装到自己的主目录,因此不需要“sudo”。
现在您需要设置应用程序的编译,以便它可以找到刚刚安装的库。如果您要编译的应用程序也在使用 automake,请查看帮助:
./configure --help
寻找类似选项的东西来指出图书馆的路径。
如果找不到指向库的路径,请将 CPATH 环境变量设置为指向库的包含目录,并将 LIBRARY_PATH 设置为指向 lib-files 所在的子目录。就像是:
export CPATH=$HOME/myapp/include
export LIBRARY_PATH=$HOME/myapp/lib
如果您编译/安装了所有内容,那么您已经完成了困难的部分。现在,如果它是一个动态可执行文件,您只需告诉动态链接器在哪里可以找到 lib 文件。通过将 LD_LIBRARY_PATH 环境变量设置为 LIBRARY_PATH 环境变量指出的同一目录来执行此操作。
export LD_LIBRARY_PATH=$HOME/myapp/lib
有关 CPATH 和 LIBRARY_PATH 环境变量的更多信息,请查看 gcc 手册页。有关 LD_LIBRARY_PATH 环境变量的信息,请查看 ld.so 手册页。