- 此问题在此处已有答案**:
(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的所有信息。
这里有所有的代码:
一个一个三个一个一个一个一个一个四个一个一个一个一个一个五个一个
1条答案
按热度按时间gstyhher1#
当使用静态库时,静态库必须列在***任何模块之后***,这些模块的依赖关系必须由该静态库来满足。
请注意,
libmylib.a
列在***main.o
之后***。-l
选项必须遵循相同的规则:-l
只是libmylib.a
或libmylib.so
的快捷方式,无论实际存在哪一个。