如何从预编译器和链接器路径中消除/ usr / local?

时间:2012-04-10 00:36:12

标签: gcc linker

我正在尝试构建一个开源软件包并遇到与我在/usr/local中安装的原型库发生冲突的问题,其中“正确”版本位于/usr

% (make distclean>/dev/null; ./configure > no_env_conf.log 2>& 1; make > no_env_make.log 2>&1 && echo Success || echo 'Build Error')
Build Error

我想在预编译或链接器路径中不使用/usr/local进行配置和编译。我认为我可以通过指定适当的环境变量来做到这一点,但这并不是很有效:

% (make distclean>/dev/null; CFLAGS=-I/usr/include LDFLAGS=-L/usr/lib ./configure > no_env_conf.log 2>& 1; make > no_env_make.log 2>&1 && echo Success || echo 'Build Error')
Build Error

但是,如果我只是从文件系统中删除/usr/local,那么一切正常:

% (sudo mv /usr/local /usr/local_off; make distclean>/dev/null; ./configure > no_env_conf.log 2>& 1; make > no_env_make.log 2>&1 && echo Success || echo 'Compile Error'; sudo mv /usr/local_off /usr/local )
Success

有没有办法从预编译器和链接器使用的路径中消除/usr/local?我特别喜欢configure选项或环境变量可以处理的内容。

具体情况:我正在OSX Lion上构建ccache,我在zlib安装了/usr/local的v1.2.6,/usr中的ccache恰好是1.2.5。这个版本实际上是作为更广泛的脚本控制的MythTV构建及其所有依赖项的一部分发生的,包括{{1}}。

1 个答案:

答案 0 :(得分:1)

来自“man gcc”:

-nostdinc
   Do not search the standard system directories for header files.
   Only the directories you have specified with -I options (and the
   directory of the current file, if appropriate) are searched.

另请注意,虽然预编译器do exist,您没有使用 - 您使用的是常规编译器,因此您应该停止将其称为“预编译器”。