2014-01-23 6 views
3

Я работаю над Ubuntu 12.10 с версией gcc версии 4.7.2.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 

Но как-то г ++ не распознает параметр -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 

EDIT: При попытке удалить «-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.

Может кто-нибудь объяснить, в чем проблема, и как я могу это исправить?

Thanks, Gil.

+0

Я не помню, чтобы увидеть «-Wl» в качестве опции. Каков его предназначенный смысл, почему вы его передаете? – legends2k

ответ

4

Из инструкции:

-Wl, опция опция Pass в качестве опции линкера. Если опция содержит запятые, она разделяется на несколько опций в запятых. Вы можете использовать этот синтаксис , чтобы передать аргумент опции. Например, -Wl, -Map, output.map передает -Map output.map в компоновщик. При использовании компоновщика GNU вы также можете получить тот же эффект с -Wl, -Map = output.map.

поэтому, вы пропустите варианты -Wl.

+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

Смежные вопросы