g++ 无法识别选项 -wl

Gil*_*evi 5 c++ ubuntu gcc makefile

我正在使用 gcc 版本 4.7.2 开发 Ubuntu 12.10。

\n\n

我正在尝试制作以下 makefile:

\n\n
CC = g++\nCCFLAGS = -fPIC -O3 -Wall -ffast-math -msse -msse2 -fopenmp\nLINKFLAGS = -shared -Wl -fopenmp -lgomp\n\nINPUT = im2col.cpp fastpool.cpp local_response_normalization.cpp neuron.cpp\nTARGET = libcpputil.so\n\n# If we are going to use MKL, we include additional flags\nMKL_FLAGS = -D DECAF_USE_MKL\nMKL_LINK_FLAGS = -lmkl_rt\n\nall: $(INPUT)\n    $(CC) -c $(CCFLAGS) $(INPUT)\n    $(CC) $(LINKFLAGS) -o $(TARGET) *.o\nall_mkl: $(INPUT)\n    $(CC) -c $(CCFLAGS) $(MKL_FLAGS) $(INPUT)\n    $(CC) $(LINKFLAGS) $(MKL_LINK_FLAGS) -o $(TARGET) *.o\nspeedtest_lrn: speedtest_lrn.cpp local_response_normalization.cpp\n    $(CC) $(CCFLAGS) -lgomp -o speedtest_lrn speedtest_lrn.cpp local_response_normalization.cpp\nclean:\n    rm *.so\n    rm *.o\n
Run Code Online (Sandbox Code Playgroud)\n\n

但不知何故,g++ 无法识别选项 -wl。这是我收到的错误:

\n\n
make -C layers/cpp/\nmake[1]: Entering directory `/home/ubuntu/decaf-release-master/decaf/layers/cpp\'\ng++ -c -fPIC -O3 -Wall -ffast-math -msse -msse2 -fopenmp im2col.cpp fastpool.cpp local_response_normalization.cpp neuron.cpp\ng++ -shared -Wl -fopenmp -lgomp -o libcpputil.so *.o\ng++: error: unrecognized command line option \xe2\x80\x98-Wl\xe2\x80\x99\nmake[1]: *** [all] Error 1\nmake[1]: Leaving directory `/home/ubuntu/decaf-release-master/decaf/layers/cpp\'\nmake: *** [all] Error 2\nFailed to build the C libraries; exiting\n
Run Code Online (Sandbox Code Playgroud)\n\n

编辑:当我尝试删除“-wl”时,我得到:

\n\n
ubuntu@ubuntu-VirtualBox:~/decaf-release-master$ python setup.py \nmake -C layers/cpp/\nmake[1]: Entering directory `/home/ubuntu/decaf-release-master/decaf/layers/cpp\'\ng++ -c -fPIC -O3 -Wall -ffast-math -msse -msse2 -fopenmp im2col.cpp fastpool.cpp local_response_normalization.cpp neuron.cpp\ng++ -shared -fopenmp -lgomp -o libcpputil.so *.o\n\nmake[1]: Leaving directory `/home/ubuntu/decaf-release-master/decaf/layers/cpp\'\nusage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]\n   or: setup.py --help [cmd1 cmd2 ...]\n   or: setup.py --help-commands\n   or: setup.py cmd --help\n\nerror: no commands supplied\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我在 Ubuntu 12.04 和 gcc 4.7.7 上尝试时,它以某种方式工作。

\n\n

有人可以解释一下问题是什么以及如何解决它吗?

\n\n

谢谢,\n吉尔。

\n

Fer*_*eak 5

从手册中:

-Wl,option 将选项作为选项传递给链接器。如果选项包含逗号,则在逗号处将其拆分为多个选项。您可以使用此语法将参数传递给选项。例如,-Wl,-Map,output.map 将 -Map output.map 传递给链接器。使用GNU链接器时,使用-Wl,-Map=output.map也可以获得相同的效果。

所以,你错过了 -Wl 的选项。