2014-01-23 177 views
3

我正在使用gcc 4.7.2版的Ubuntu 12.10。g ++無法識別-wl

我試圖讓下面的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」我得到:

[email protected]:~/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。

有人可以請解釋有什麼問題,我該如何解決?

謝謝, Gil。

+0

我不記得看到'-Wl'作爲一個選項。它的意圖是什麼,你爲什麼通過它? – legends2k

回答

4

從手冊:

-Wl,選項 通行證選項作爲選項給鏈接器。如果選項包含逗號,則在逗號處將其分割爲多個選項。您可以使用此 語法將參數傳遞給該選項。例如, -Wl,-Map,output.map將-output.map傳遞給鏈接器。當使用GNU鏈接器時,您也可以使用 -Wl,-Map = output.map獲得相同的效果。

這樣,你錯過了輪候冊的選項。

+1

+1有用的信息;如果有人感興趣,請點擊[鏈接](http://gcc.gnu.org/onlinedocs/gcc-4.8.1/gcc/Link-Options.html#Link-Options)。同樣,'-Wp,option'用於彙編器的預處理器和'-Wa,option'。 – legends2k

+0

感謝您的回答。我從我下載的軟件包中獲得了這個makefile。是否一樣刪除-Wl? – GilLevi

+0

嘗試將其刪除...如果未按預期執行,請返回此處:)我們將修復它! – fritzone