Компиляция C++ в Ubuntu (psa - Анализ Набора Точки)

Я являюсь новым в Ubuntu и пытающийся скомпилировать код C++ его. Код использует 2 зависимости (Cairographics и FFTW3). Я установил их обоих использование ./configure, make и make install в каталоге $HOME/prefix/ (следование инструкциям, данным здесь, Как установить Каир 1.8.10),

Теперь у меня есть в этом каталоге 4 папки, а именно, bin, include, lib и share

Make-файл кода требует определения каталога зависимостей. Как этот

INC := -I$HOME/prefic/include
LIB := -L$HOME/prefic/lib

Когда я компилирую код, я установил переменные среды как

export PKG_CONFIG_PATH=$HOME/prefic/lib/pkgconfig
export LD_LIBRARY_PATH=$HOME/prefic/lib

и затем использование делает. Компоновщик дает "неопределенную ссылку на" функции из Каира или FFTW

make-файл я использую

###################### user-configuration section #######################
INC := -I/opt/local/include
LIB := -L/opt/local/lib

# 32 bit
#MARCH := -m32

# 64 bit
MARCH := -m64
#########################################################################

CXX := g++
CXXFLAGS := -Wall -fopenmp
OPTFLAGS := -O3 $(MARCH) 

LIB += -lfftw3 -lm -lcairo

CXXFILES := main.cpp fileio.cpp measurements.cpp spectralanalysis.cpp
OBJS := $(patsubst %.cpp, %.o, $(CXXFILES))
TARGET := psa

.PHONY: all clean cleanall rebuild

 all: $(TARGET)

  $(TARGET): $(OBJS)
    @$(CXX) $(CXXFLAGS) $(OPTFLAGS) -o $(TARGET) $(LIB) $(OBJS)

 %.o : %.cpp
    @$(CXX) $(CXXFLAGS) $(OPTFLAGS) $(INC) -o $@ -c $<

 clean:
    rm -rf *.o

  cleanall:     clean
    rm -rf $(TARGET)

 rebuild:
     $(MAKE) cleanall
     $(MAKE) all

Я думаю, что не связываю код с зависимостями правильно. Мог кто-то помогать.

psa кодируют, я пытаюсь скомпилировать, здесь http://code.google.com/p/psa/downloads/list

2
задан 13 April 2017 в 15:24

1 ответ

Я думаю, что необходимо переместить библиотеки в конец командной строки (в Вашем Makefile: место $(LIB) после $(OBJS)). Флаг компоновщика --as-needed активируется значением по умолчанию начиная с Ubuntu 11.10 . Это делает компоновщика чувствительным к упорядочиванию библиотек по командной строке.

Между прочим: Я не знаю, знаете ли Вы уже, что, но не должны устанавливать Каир и FFTW3 из источника.

можно установить зависимости с системой управления пакета:

sudo apt-get install libcairo2-dev libfftw3-dev

Затем необходимо изменить следующие две строки в Makefile:

INC := -I/usr/include
LIB := -L/usr/lib
0
ответ дан 13 April 2017 в 15:24

Другие вопросы по тегам:

Похожие вопросы: