我正在尝试构建一个开源软件包并遇到与我在/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}}。
答案 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,您没有使用 - 您使用的是常规编译器,因此您应该停止将其称为“预编译器”。