我试图在没有根权限的unix集群中安装C++库([医]鲤鱼)。
通过运行以下make命令,我成功地在没有用户权限的情况下编译了C++库:
make install DESTDIR=my_usr_dir但后来在鲤鱼自述文件中写着:
其中"my_usr_dir“用于存储C++头和库文件。确保您的C++编译器配置为使用该目录中的子目录。
鲤鱼用来安装库的编译器是gcc-4.8.1。我不知道编译器是在哪里安装的,但是当我在unix集群中启动会话时,编译器就被加载了。
在安装armadillo之后,我正在尝试编译使用armadillo库的开放源代码。这个开源代码也有一个makefile。
但是,当我进入开源代码并输入:
make 它叫g++。如何确保g++能够识别以前安装在my_usr_dir中的armadillo库?
目前,如果转到src,然后键入make,则会得到以下错误:
opencode.cpp:28:21: fatal error: armadillo: No such file or directory
#include <armadillo>
^
compilation terminated.
make: *** [mmcollapse] Error 1发布于 2013-10-11 21:52:55
您可以使用
alias gcc="gcc -I./my_usr_dir/include -L./my_usr_dir/lib"等等,在您的.bashrc文件中。这样,每当您在命令行上调用gcc时,将在命令行中输入的所有其他参数之前添加这些标志。
发布于 2013-10-11 21:50:50
我认为自述文件指的是来自应用程序的库头和库文件的使用。为了使它们有用,编译器/链接器/加载器(通常都由“编译器”驱动)必须知道在哪里可以找到它们。编译器总是在某些默认目录中查找,例如/usr/include (用于标头)和/usr/lib/ (用于库),但它们需要根权限才能写入。但是,可以告诉带有标志-I目录的编译器在目录目录中搜索标头。对于库,请使用-l和-L (查看编译器的手册页)。如果使用动态链接(共享对象文件),还可能需要考虑LD_LIBRARY_PATH和LD_RUN_PATH环境变量。
发布于 2013-10-11 21:55:27
这个问题看起来类似于
如果您不想更改.bashrc
按照上面文章中的建议使用-rpath。
gcc XXX.c -o xxx.out -Lmy_usr_dir -lXX -Wl,-rpath=my_usr_dir
-L用于静态链接-rpath,用于将目录添加到链接器搜索路径。
这里有更多关于-rpath的信息
不要费心去投答案,因为这真的不是一个答案。我会评论,但我找不到添加评论为您的帖子。
https://stackoverflow.com/questions/19327728
复制相似问题