我需要一个地方在linux机器中安装库,我不能使用su命令访问。我使用了~/local/bin、/lib、/include,但是我不知道如何判断./configure来查找那里的库(特别是,我正在尝试编译emacs,它需要libgif,而我的发行版中没有)。
我试着添加
export PATH=$PATH:~/local/bin
export LD_LIBRARY_PATH=~/local/lib
export C_INCLUDE_PATH=~/local/include
export CPLUS_INCLUDE_PATH=~/local/include
发送到.bashrc,但似乎不起作用。
发布于 2011-09-27 05:29:23
在运行make时设置LDFLAGS和CFLAGS:
$ LDFLAGS="-L/home/me/local/lib" CFLAGS="-I/home/me/local/include" make
如果您不想多次这样做,那么可以将它们导出到您的.bashrc (或您的shell等效物)中。还要将LD_LIBRARY_PATH设置为包含/home/me/local/lib:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/me/local/lib
发布于 2013-05-25 02:02:27
这需要一段时间才能恢复正常。在Ubuntu中对ARM目标进行交叉编译时,我遇到了这个问题。我用以下方法解决了这个问题:
PATH=$PATH:/ccpath/bin CC=ccname-gcc AR=ccname-ar LD=ccname-ld CPPFLAGS="-nostdinc -I/ccrootfs/usr/include ..." LDFLAGS=-L/ccrootfs/usr/lib ./autogen.sh --build=`config.guess` --host=armv5tejl-unknown-linux-gnueabihf
注意CFLAGS没有和autogen.sh/configure一起使用,使用它会给我一个错误:"configure: error: C编译器不能创建可执行文件“。在我使用的构建环境中,如果您没有在上面的命令中使用./autogen.sh替换./ autogen.sh脚本,则会提供一个配置脚本。我在目标系统上运行config.guess以获取--host参数。
成功运行autogen.sh/configure后,使用以下命令进行编译:
PATH=$PATH:/ccpath/bin CC=ccname-gcc AR=ccname-ar LD=ccname-ld CPPFLAGS="-nostdinc -I/ccrootfs/usr/include ..." LDFLAGS=-L/ccrootfs/usr/lib CFLAGS="-march=... -mcpu=... etc." make
我选择使用的CFLAGS是:"-march=armv5te -fno-tree-vectorize -mthumb interwork -mcpu=arm926ej-s“。正确设置所有的include目录将需要一段时间:您可能需要一些指向您的交叉编译器的include和一些指向您的根文件系统的include,并且可能会有一些冲突。
我确信这不是一个完美的答案。我仍然看到一些在Makefiles中包含指向/而不是/ccrootfs的目录。很想知道如何纠正这一点。希望这对某些人有帮助。
发布于 2022-02-18 02:56:46
例如,构建git usig $HOME/curl
package=git
version=2.17.0
tarUrl=https://mirrors.edge.kernel.org/pub/software/scm/git/$package-$version.tar.gz
install(){
./configure --prefix=$HOME
LDFLAGS="-L$HOME/lib" CFLAGS="-I$HOME/include" make -j 2
make install
}
if [ -e $package-$version.tar.gz ]; then
echo "cache"
else
wget --no-check-certificate ${tarUrl}
tar -xvf $package-$version.tar.gz
fi
cd ./$package-$version
install
https://stackoverflow.com/questions/7561509
复制相似问题