首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >链接dylib库

链接dylib库
EN

Stack Overflow用户
提问于 2017-05-14 16:29:01
回答 1查看 1.1K关注 0票数 1

我正在尝试将dylib链接到Mac上的makefile,但是Clang给出了这样的消息:

代码语言:javascript
复制
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

代码语言:javascript
复制
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 $@
main.o: main.cpp
    $(CC) $(CFLAGS) -c $< -o $@ 
besselJ.o: besselJ.cpp
    $(CC) $(CFLAGS) -c $< -o $@ $(LIBS)

在阅读了其他的问题后,我尝试了-L和-l的不同组合,但都没有效果。抱歉,这是我第一次用外部图书馆.

我把我的makefile改为:

代码语言:javascript
复制
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 $@ $(LIBS)
main.o: main.cpp
    $(CC) $(CFLAGS) -c $< -o $@ 
besselJ.o: besselJ.cpp
    $(CC) $(CFLAGS) -c $< -o $@ 

但我仍然有问题,我得到了这样的信息:

代码语言:javascript
复制
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解决了这个问题:其他用户在更新库后也遇到了同样的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-14 18:24:50

您需要将库传递给链接器,而不是编译器:

代码语言:javascript
复制
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 $@ $(LIBS)
main.o: main.cpp
    $(CC) $(CFLAGS) -c $< -o $@ 
besselJ.o: besselJ.cpp
    $(CC) $(CFLAGS) -c $< -o $@
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43966311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档