【问题标题】:g++ doesn't recognize the option -wlg++ 无法识别选项 -wl
【发布时间】:2014-02-13 19:58:04
【问题描述】:

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

我正在尝试制作以下 makefile:

CC = g++
CCFLAGS = -fPIC -O3 -Wall -ffast-math -msse -msse2 -fopenmp
LINKFLAGS = -shared -Wl -fopenmp -lgomp

INPUT = im2col.cpp fastpool.cpp local_response_normalization.cpp neuron.cpp
TARGET = libcpputil.so

# If we are going to use MKL, we include additional flags
MKL_FLAGS = -D DECAF_USE_MKL
MKL_LINK_FLAGS = -lmkl_rt

all: $(INPUT)
    $(CC) -c $(CCFLAGS) $(INPUT)
    $(CC) $(LINKFLAGS) -o $(TARGET) *.o
all_mkl: $(INPUT)
    $(CC) -c $(CCFLAGS) $(MKL_FLAGS) $(INPUT)
    $(CC) $(LINKFLAGS) $(MKL_LINK_FLAGS) -o $(TARGET) *.o
speedtest_lrn: speedtest_lrn.cpp local_response_normalization.cpp
    $(CC) $(CCFLAGS) -lgomp -o speedtest_lrn speedtest_lrn.cpp local_response_normalization.cpp
clean:
    rm *.so
    rm *.o

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

make -C layers/cpp/
make[1]: Entering directory `/home/ubuntu/decaf-release-master/decaf/layers/cpp'
g++ -c -fPIC -O3 -Wall -ffast-math -msse -msse2 -fopenmp im2col.cpp fastpool.cpp local_response_normalization.cpp neuron.cpp
g++ -shared -Wl -fopenmp -lgomp -o libcpputil.so *.o
g++: error: unrecognized command line option ‘-Wl’
make[1]: *** [all] Error 1
make[1]: Leaving directory `/home/ubuntu/decaf-release-master/decaf/layers/cpp'
make: *** [all] Error 2
Failed to build the C libraries; exiting

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

ubuntu@ubuntu-VirtualBox:~/decaf-release-master$ python setup.py 
make -C layers/cpp/
make[1]: Entering directory `/home/ubuntu/decaf-release-master/decaf/layers/cpp'
g++ -c -fPIC -O3 -Wall -ffast-math -msse -msse2 -fopenmp im2col.cpp fastpool.cpp local_response_normalization.cpp neuron.cpp
g++ -shared -fopenmp -lgomp -o libcpputil.so *.o

make[1]: Leaving directory `/home/ubuntu/decaf-release-master/decaf/layers/cpp'
usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
   or: setup.py --help [cmd1 cmd2 ...]
   or: setup.py --help-commands
   or: setup.py cmd --help

error: no commands supplied

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

谁能解释一下是什么问题,我该如何解决?

谢谢, 吉尔。

【问题讨论】:

  • 我不记得看到-Wl 是一个选项。它的本意是什么,为什么要通过?

标签: c++ ubuntu gcc makefile


【解决方案1】:

来自手册:

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

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

【讨论】:

  • +1 很高兴知道;如果有人感兴趣,这里是the link。同样,-Wp,option 用于预处理器,-Wa,option 用于汇编器。
  • 感谢您的回答。我从下载的包中得到了这个makefile。删除 -Wl 是否相同?
  • 尝试删除它...如果它没有按预期执行,请返回这里:) 我们会修复它!
  • 谢谢,我尝试删除它,但没有成功,请查看我的问题的编辑。
  • 嗯,他的第二个错误与 make 和 gcc 无关,它与您尝试运行的软件包附带的 setup.py 有关。你的编译成功了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多