链接dylib库
问题描述:
我想一个dylib链接到我的Mac上的makefile,但锵给出了这样的消息:链接dylib库
Undefined symbols for architecture x86_64:
"_zbesj_wrap", referenced from:
sp_bessel::besselJ(double, std::__1::complex<double>) in besselJ.o
"_zbesy_wrap", referenced from:
sp_bessel::besselJ(double, std::__1::complex<double>) in besselJ.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我在/ usr/lib中,在那里我可以看到libcomplex_bessel.0.6安装库.0.dylib和libcomplex_bessel.dylib。 这是我的makefile:
OBJS = main.o besselJ.o
CC = c++
CFLAGS = -std=c++11 -stdlib=libc++
LIBS = -L/usr/lib -lcomplex_bessel
PROGRAM_NAME = test
all: $(PROGRAM_NAME)
$(PROGRAM_NAME): $(OBJS)
$(CC) $(CFLAGS) $(OBJS) -o [email protected]
main.o: main.cpp
$(CC) $(CFLAGS) -c $< -o [email protected]
besselJ.o: besselJ.cpp
$(CC) $(CFLAGS) -c $< -o [email protected] $(LIBS)
阅读其他问题后,我尝试了-L和-l不同的组合,但毫无效果。很抱歉,但它是我第一次与外部库...
我改变了我的makefile这样:
OBJS = main.o besselJ.o
CC = c++
CFLAGS = -std=c++11 -stdlib=libc++
LIBS = -L/usr/lib -lcomplex_bessel
PROGRAM_NAME = test
all: $(PROGRAM_NAME)
$(PROGRAM_NAME): $(OBJS)
$(CC) $(CFLAGS) $(OBJS) -o [email protected] $(LIBS)
main.o: main.cpp
$(CC) $(CFLAGS) -c $< -o [email protected]
besselJ.o: besselJ.cpp
$(CC) $(CFLAGS) -c $< -o [email protected]
,但我仍然有问题,我得到这个消息:
c++ -std=c++11 -stdlib=libc++ main.o besselJ.o -o test -L/usr/lib -lcomplex_bessel
ld: library not found for -lcomplex_bessel
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [test] Error 1
好吧,我想我解决了它使用xcode-select --install
:其他用户更新后有与库相同的问题。
答
您需要的库传递到连接器,而不是编译:
OBJS = main.o besselJ.o
CC = c++
CFLAGS = -std=c++11 -stdlib=libc++
LIBS = -L/usr/lib -lcomplex_bessel
PROGRAM_NAME = test
all: $(PROGRAM_NAME)
$(PROGRAM_NAME): $(OBJS)
$(CC) $(OBJS) -o [email protected] $(LIBS)
main.o: main.cpp
$(CC) $(CFLAGS) -c $< -o [email protected]
besselJ.o: besselJ.cpp
$(CC) $(CFLAGS) -c $< -o [email protected]
好,谢谢,我做到了,但我得到这个消息: LD:库找不到-lcomplex_bessel 铛:错误:连接命令失败,退出代码1(使用-v查看调用) – gabri
我解决了它,谢谢:) – gabri