首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在linux中向g++编译器添加armadillo库

在linux中向g++编译器添加armadillo库
EN

Stack Overflow用户
提问于 2013-10-11 21:43:15
回答 3查看 7.2K关注 0票数 4

我试图在没有根权限的unix集群中安装C++库([医]鲤鱼)。

通过运行以下make命令,我成功地在没有用户权限的情况下编译了C++库:

代码语言:javascript
复制
make install DESTDIR=my_usr_dir

但后来在鲤鱼自述文件中写着:

其中"my_usr_dir“用于存储C++头和库文件。确保您的C++编译器配置为使用该目录中的子目录。

鲤鱼用来安装库的编译器是gcc-4.8.1。我不知道编译器是在哪里安装的,但是当我在unix集群中启动会话时,编译器就被加载了。

在安装armadillo之后,我正在尝试编译使用armadillo库的开放源代码。这个开源代码也有一个makefile。

但是,当我进入开源代码并输入:

代码语言:javascript
复制
make 

它叫g++。如何确保g++能够识别以前安装在my_usr_dir中的armadillo库?

目前,如果转到src,然后键入make,则会得到以下错误:

代码语言:javascript
复制
opencode.cpp:28:21: fatal error: armadillo: No such file or directory
 #include <armadillo>
                     ^
compilation terminated.
make: *** [mmcollapse] Error 1
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-11 21:52:55

您可以使用

代码语言:javascript
复制
 alias gcc="gcc -I./my_usr_dir/include -L./my_usr_dir/lib"

等等,在您的.bashrc文件中。这样,每当您在命令行上调用gcc时,将在命令行中输入的所有其他参数之前添加这些标志。

票数 3
EN

Stack Overflow用户

发布于 2013-10-11 21:50:50

我认为自述文件指的是来自应用程序的库头和库文件的使用。为了使它们有用,编译器/链接器/加载器(通常都由“编译器”驱动)必须知道在哪里可以找到它们。编译器总是在某些默认目录中查找,例如/usr/include (用于标头)和/usr/lib/ (用于库),但它们需要根权限才能写入。但是,可以告诉带有标志-I目录的编译器在目录目录中搜索标头。对于库,请使用-l-L (查看编译器的手册页)。如果使用动态链接(共享对象文件),还可能需要考虑LD_LIBRARY_PATHLD_RUN_PATH环境变量。

票数 2
EN

Stack Overflow用户

发布于 2013-10-11 21:55:27

这个问题看起来类似于

如何在GCC Linux中指定非默认的共享库路径?运行时获取“加载共享库时出错”

如果您不想更改.bashrc

按照上面文章中的建议使用-rpath。

gcc XXX.c -o xxx.out -Lmy_usr_dir -lXX -Wl,-rpath=my_usr_dir

-L用于静态链接-rpath,用于将目录添加到链接器搜索路径。

这里有更多关于-rpath的信息

我不明白-Wl,-rpath -Wl,

不要费心去投答案,因为这真的不是一个答案。我会评论,但我找不到添加评论为您的帖子。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19327728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档