Не удается найти -lHalide при компиляции игрушечной программы - PullRequest
0 голосов
/ 12 февраля 2020

Я пытался установить и использовать Halide.

Я установил Halide, выполнив следующее:

Я клонировал репозиторий Halide, затем выполнил следующие команды из root из хранилище.

mkdir build
cd build
cmake ..
sudo make install

После завершения установки я создал файл (test. cpp) в несвязанном каталоге со следующим содержимым:

#include "Halide.h"  // <~~ changing this to <Halide.h> also results in the same error

#include <stdio.h>

int main() {
  return 0;
}

Я пытаюсь скомпилировать это с: gcc -g -Wall -pedantic -o test test.cpp -lHalide -lpthread -ldl -std=c++11, которое дает мне следующее сообщение об ошибке:

/usr/bin/ld: cannot find -lHalide
collect2: error: ld returned 1 exit status

Я также попробовал следующее с (удивительно, учитывая, что нет каталога ../include или ../bin) с тем же результатом :

g++ test.cpp -g -I ../include -L ../bin -lHalide -lpthread -ldl -o test -std=c++11

Редактировать:

Я вижу, что у меня есть файл с именем Halide.h в /usr/local/include/, как мне сделать, чтобы g cc его увидел?

1 Ответ

0 голосов
/ 12 февраля 2020

Для правильной компиляции необходимо, чтобы набор файлов был «включен» (не уверен, что это правильная терминология), а переменная окружения LD_LIBRARY_PATH установлена ​​в родительский каталог файла libHalide.so

Ниже приведен Makefile, который работает:

HALIDE_ROOT?=/usr/local/
HALIDE_BUILD?=${HALIDE_ROOT}

HALIDE_TOOLS_DIR=${HALIDE_ROOT}/tools/
HALIDE_LIB_CMAKE:=${HALIDE_BUILD}/lib
HALIDE_LIB_MAKE:=${HALIDE_BUILD}/bin

HALIDE_LIB:=libHalide.so

HALIDE_LIB_DIR=${HALIDE_LIB_MAKE}

HALIDE_INCLUDES:=-I${HALIDE_BUILD}/include -I${HALIDE_ROOT}/tools -L${HALIDE_LIB_DIR}

LIBS:=-ldl -lpthread -lz

.PHONY:         clean

all:        build/test

CC = g++ -Wall -pedantic -O2 -g -std=c++11
HALIDE_REQ = -lHalide -lpthread -ldl -std=c++11


build/test:     test.cpp
    $(CC) ${HALIDE_INCLUDES} intro.cpp -o build/test ${LIBS} -lHalide


clean:
    rm ./build/*
...