编译玩具程序时找不到 -lHalide

Cannot find -lHalide when compiling a toy program

我一直在尝试安装和使用 Halide。

我通过执行以下操作安装了 Halide:

我克隆了 Halide 存储库,然后从存储库的根目录执行了以下命令。

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

编辑:

我可以看到 /usr/local/include/ 下确实有一个名为 Halide.h 的文件,如何让 gcc 看到它?

要正确编译它需要一堆文件 "included"(不确定这是否是正确的术语)以及环境变量 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/*