在通过网络文件系统共享的 HOME 下安装 C C++ 库

Posted

技术标签:

【中文标题】在通过网络文件系统共享的 HOME 下安装 C C++ 库【英文标题】:Install C C++ library under HOME shared via Network File System 【发布时间】:2009-08-14 12:31:05 【问题描述】:

我的主目录通过网络文件系统在多台 linux 计算机之间共享。 我想在我的主目录下从源代码安装一些 C C++ 库,并希望它们可以在所有 linux 计算机下使用。

对于不同的计算机,我是否必须在我的 Home 的不同目录下安装不同版本的库?

假设我有一个调用这些库的 C C++ 程序,如何在 Makefile 中为不同的计算机指定不同的包含和链接文件和目录?是根据计算机的主机名来确定目录吗?

是否可以为不同的linux计算机组合不同版本的.a和.so文件以及库的头文件,以便所有计算机的包含和链接文件和目录都相同,我不必在我的C C++程序的Makefile中为不同的计算机指定不同的目录?

感谢和问候!

【问题讨论】:

【参考方案1】:

这很简单也很常见。

通过 C C++ 我假设你的意思是你有使用 C 编译器编译的库,以及使用 C++ 编译器编译的库。

如果您使用的编译器版本相同,则每个版本不需要不同的库。如果它们不同,可能仍然可以使用相同的 C 库,但 C++ 变得更加成问题。

如果文件在您的主目录中,在您的 Makefile 中最简单的操作是创建所有相对于 $HOME 的路径。应该在每个系统上正确设置此环境变量。

如果您需要在不同机器上引用不同的库,最直接的方法是将它们放在与主机名同名的目录中。像这样的:

CXXFLAGS=-I$(HOME)/app/$(HOST)/include

您可以通过提取 gcc 版本号并使用它来做一些更花哨的事情,但对于几台机器来说这可能有点过头了。

【讨论】:

谢谢!两台机器的 gcc 版本不同。第一个是 gcc/g++ 3.4.6 20060404 (Red Hat 3.4.6-10);第二个是 gcc/g++ (Ubuntu 4.3.2-1ubuntu12) 4.3.2。第一台机器是 CentOS release 4.7 (Final) 和 x86_64,第二台机器是 Ubuntu 8.10 和 x86_64。如果我必须将库安装在不同的目录中,如何在 Makefile 中为不同的机器指定它们?谢谢

以上是关于在通过网络文件系统共享的 HOME 下安装 C C++ 库的主要内容,如果未能解决你的问题,请参考以下文章

WIN7 c:\Program Files文件夹下没有Windows Sidebar 怎么办?

nfs部署和优化

CentOS7.2中NFS1.3 安装

VM中怎么实现linux与原系统共享文件

CentOS 中安装NFS

Mac下使用samba共享VMware Fusion中的虚拟机Ubuntu的home目录