即使定义了搜索路径,也找不到自定义共享库

时间:2017-10-27 17:21:10

标签: c++ linux shared-libraries

我有以下文件:

.
├── combinatorics
│   ├── permutation.cpp
│   └── permutation.h
├── main.cpp
└── math
    ├── basic.cpp
    └── basic.h

我正在尝试通过以下步骤创建共享库:

g++ -c -Wall -std=c++14 -fpic combinatorics/permutation.cpp -o permutations.o
g++ -c -Wall -std=c++14 -fpic math/basic.cpp -o mathbasic.o
g++ -shared -o combmath.so permutations.o mathbasic.o
g++ -Wall -std=c++14 main.cpp  -L. -o output -lcombmath

但我收到以下消息:

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

我做错了什么?

1 个答案:

答案 0 :(得分:0)

链接选项-lfoo指示链接器搜索文件 指定的libfoo.so(共享库)或libfoo.a(静态库) 链接器搜索目录(-L/x/y/z),然后在链接器的默认值中 搜索目录,当它找到其中一个文件时停止 如果它在同一目录中找到,则更喜欢libfoo.so

关于你的联系:

g++ -Wall -std=c++14 main.cpp  -L. -o output -lcombmath

要成功,因此,您之前需要构建libcombmath.so 与命令在同一目录中:

g++ -shared -o libcombmath.so permutations.o mathbasic.o

并没有构建combmath.so,就像您使用命令一样:

g++ -shared -o combmath.so permutations.o mathbasic.o