编译玩具程序时找不到 -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/*
我一直在尝试安装和使用 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/*