我有一个定制编译的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传递可能行不通。

10-04 13:07