我有一个自定义编译的gcc 5.4.0,其文件夹结构为/home/gccprefix/lib64/libstdc++.so.6
。
到目前为止,编译已通过配置(例如CC=/home/gccprfix/bin/gcc CFLAGS=-fPIC CFLAGS=-Wfatal-errors CFLAGS=-I/home/gccprefix/header/tr1
)传递额外的标记。
但是现在我在使用/home/gccprefix/bin/ragel
编译cairo时遇到了问题。为了编译,我有一个bash脚本,其中标志被分配为变量,例如
MYFLAGS="CC=/home/gccprfix/bin/gcc CFLAGS=-fPIC CFLAGS=-Wfatal-errors CFLAGS=-I/home/gccprefix/header/tr1"
.../configure ${MYFLAGS}
Ragel使用上述/home/gccprefix/bin/gcc
进行编译,没有错误。
然而,在make
期间,cairo,我得到了
ragel: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ragel)
这是因为gcc找到了默认的/usr/lib64/libstdc++.so.6
。因此,遵循SO上的几个线程,我相信我需要扩展传递给configure的标志。
正确的语法是什么
`CFLAGS=-Wl,-rpath,/home/gccprefix/lib64`
或者我放弃CFLAGS=
`-Wl,-rpath,/home/gccprefix/lib64`
使用CFLAGS=
的第一个选项,新的libstdc++.so.6
未通过,并且发生相同的错误,使用不带CFLAGS
的发送只会出错
configure: error: unrecognized option: `--Wl,-rpath,/home/gccprefix/lib64'
那么我使用什么前缀?
答案 0 :(得分:0)
正确的语法是
./configure ... LDFLAGS=-Wl,-rpath=/home/gccprefix/lib64
查看生成的Makefile,你可能可以使用CXXFLAGS,但不能使用CFLAGS,它们根本不用于C ++项目。
注意CFLAGS=-fPIC CFLAGS=-Wfatal-errors CFLAGS=-I...
没有意义,只有-I...
将被传递给编译器,并且只传递给C编译器。请尝试CXXFLAGS="-fPIC -Wfatal-errors -I..."
,确保configure将其作为单个参数。通过MYFLAGS传递它可能不会起作用。