gcc “-L -lmylib”在g++中未按预期工作[重复]

toe95027  于 2023-03-02  发布在  其他
关注(0)|答案(1)|浏览(115)
    • 此问题在此处已有答案**:

(9个答案)
3天前关闭。
下面是文件树:

├── lib
│   ├── mylib.cpp
│   ├── mylib.h
│   └── mylib.o
├── libmylib.a
├── main.cpp
├── main.o
├── Makefile
├── mylib
├── mylib.a
└── myprogram

此命令不起作用

g++ -L/home/xxx/make_test -lmylib  main.o -o myprogram2
/usr/local/bin/ld: main.o: in function `main':
main.cpp:(.text+0x9): undefined reference to `f'
collect2: error: ld returned 1 exit status

但这是可行的:

g++ main.o libmylib.a -o myprogram

我不知道为什么会发生错误?-L/home/xxx/make_test -lmylib已经涵盖了查找libmylib. a的所有信息。
这里有所有的代码:
一个一个三个一个一个一个一个一个四个一个一个一个一个一个五个一个

gstyhher

gstyhher1#

当使用静态库时,静态库必须列在***任何模块之后***,这些模块的依赖关系必须由该静态库来满足。

g++ main.o libmylib.a -o myprogram

请注意,libmylib.a列在***main.o之后***。-l选项必须遵循相同的规则:

g++ -L/home/xxx/make_test main.o -lmylib -o myprogram2

-l只是libmylib.alibmylib.so的快捷方式,无论实际存在哪一个。

相关问题