在主目录中以非 root 身份编译和安装程序?

在主目录中以非 root 身份编译和安装程序?

我正在尝试在主目录中编译 Solaris 下的程序。
我有过简单的安装经验,只需

   $> CD src
   $> ./configure --prefix=/home/peter
   $> make
   $> make install

但是,随着程序的复杂度增加,并且依赖于特殊库,我该如何让系统在我的主目录中查找这些程序?我该如何将它们编译到我的主目录中?

答案1

当我交叉编译应用程序时,我必须做类似的事情。如果 ./configure 支持它,您可以使用 --help 检查,您可以执行以下操作

./configure --extra-ldflags=-L/root/Installs/ffmpeg/forWin/usr/lib --extra-cflags=-I/root/Installs/ffmpeg/forWin/usr/include

有一个用于库的条目,还有一个用于包含的条目,但是,总是有一种老式的方法,只需将其附加在 configure 或 make 之前即可

LDFLAGS='-L/root/Installs/ffmpeg/forWin/usr/lib' CFLAGS='-I/root/Installs/ffmpeg/forWin/usr/include' ./configure
LDFLAGS='-L/root/Installs/ffmpeg/forWin/usr/lib' CFLAGS='-I/root/Installs/ffmpeg/forWin/usr/include' make

对于 make,我认为它们可以在之前或之后指定,但是不要引用我的话。

答案2

这取决于。

如果您正在构建使用 的软件configure,大多数configure脚本将允许您指定第三方库的路径。执行configure --help并查找 --with-feature=/path/to/software。

正如其他答案所提到的,configure其他脚本倾向于查看环境变量CFLAGS LDFLAGSLIBS。您可以使用 -I/include/paths 和 -L/library/paths 设置 CFLAGS,这可能会有所帮助。

最糟糕的情况是,您可能需要编辑 Makefile 来重置这些路径。

如果您希望软件位于某个位置,configure脚本往往会使用 --prefix= 参数来指定安装目录。或者您可能需要编辑 Makefile。

相关内容