如何添加include和libpath来configuration/ make循环?

我需要一个地方来安装库,我没有su访问Linux的框。 我正在使用〜/ 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但它似乎不工作。

你想要一个config.site文件。 尝试:

 $ mkdir -p〜/ local / share
 $ cat << EOF>〜/ local / share / config.site
 CPPFLAGS = -I $ HOME /本地/包括
 LDFLAGS = -L $ HOME / local / lib目录
 ...
 EOF

每当你调用一个autoconf生成的configuration脚本–prefix = $ HOME / local时,config.site将被读取,所有的分配将会为你做。 CPPFLAGS和LDFLAGS应该是你所需要的,但是你也可以做任何其他期望的任务(因此在上面的示例中)。 请注意,-I标志属于CPPFLAGS而不属于CFLAGS,因为-I仅用于预处理器,而不用于编译器。

运行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 

这花了一段时间才得到正确的。 在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 compiler can not create executables”。 在构build环境中,我使用了一个autogen.sh脚本,如果在上面的命令中没有使用autogen.sh脚本replace./autogen.sh并使用./configure。 我在目标系统上运行了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 

我select使用的CFLAGS是:“-march = armv5te -fno-tree-vectorize -mthumb-interwork -mcpu = arm926ej-s”。 要使所有包含目录正确设置需要一段时间:您可能需要一些包含指向交叉编译器的指针,并且有些指向包含根文件系统,并且可能会有一些冲突。

我相信这不是一个完美的答案。 而且我还看到一些include目录指向Makefiles中的/和not / ccrootfs。 很想知道如何纠正这一点。 希望这有助于某人。