我有一个定制编译的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
编译的,没有错误。但是在去开罗的途中
ragel: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ragel)
这是因为gcc找到了默认的
make
。所以在几个线程之后,我相信我需要扩展传递给configure的标志。正确的语法是什么
`CFLAGS=-Wl,-rpath,/home/gccprefix/lib64`
或者我要删除
/usr/lib64/libstdc++.so.6
`-Wl,-rpath,/home/gccprefix/lib64`
使用带有
CFLAGS=
的第一个选项时,新的CFLAGS=
不会被传递,并且会发生相同的错误,使用不带libstdc++.so.6
的send只会给出一个错误configure: error: unrecognized option: `--Wl,-rpath,/home/gccprefix/lib64'
那我用什么前缀呢?
最佳答案
正确的语法是
./configure ... LDFLAGS=-Wl,-rpath=/home/gccprefix/lib64
查看生成的MaxFrm文件,您可能会侥幸逃脱CXFLAG,但不能使用cFLAGS,这对于C++独到的项目来说根本没有用过。
注意
CFLAGS=-fPIC CFLAGS=-Wfatal-errors CFLAGS=-I...
是无意义的,只有-I...
将被传递给编译器,并且只传递给C编译器。改为尝试CXXFLAGS="-fPIC -Wfatal-errors -I..."
,确保configure将其作为单个参数获取。通过MYFLAGS传递可能行不通。