已指定目录但链接器仍无法找到静态库问题求助
静态库集成问题:编译正常但链接阶段ld找不到libkeypad.a
我在将静态库libkeypad.a集成到项目时遇到问题:使用gcc编译正常,但链接阶段ld始终无法找到该库。
链接命令及错误输出
arm-unknown-linux-gnueabihf-g++ -std=c++11 -ggdb -Wall -Wextra -Wmultichar -O1 -fstack-protector-all -mfpu=neon -mfloat-abi=hard main.o vfd.o relay.o keypad.o receiver.o widgets.o tmc.o database.o sound.o ProceduralTimerTaskAdapter.o cd.o TrafficMessage.o -o autoradio -L $(shell pwd):${HOME}/x-tools/arm-unknown-linux-gnueabihf/arm-unknown-linux-gnueabihf/sysroot/usr/lib/arm-linux-gnueabihf:${HOME}/x-tools/arm-unknown-linux-gnueabihf/arm-unknown-linux-gnueabihf/sysroot/lib/arm-linux-gnueabihf:${HOME}/x-tools/arm-unknown-linux-gnueabihf/arm-unknown-linux-gnueabihf/sysroot/usr/lib:/usr/lib -Wl,-rpath-link=$(shell pwd):${HOME}/x-tools/arm-unknown-linux-gnueabihf/arm-unknown-linux-gnueabihf/sysroot/usr/lib/arm-linux-gnueabihf:${HOME}/x-tools/arm-unknown-linux-gnueabihf/arm-unknown-linux-gnueabihf/sysroot/lib/arm-linux-gnueabihf:${HOME}/x-tools/arm-unknown-linux-gnueabihf/arm-unknown-linux-gnueabihf/sysroot/usr/lib -lpthread -lkeystonecomm -lgps -lpigpio -lpigpiod_if2 -lrt -lGeographic -lmk4 -lcsvparser -lasound -lespeak-ng -lmpg123 -lout123 -lPocoFoundation -lPocoUtil -lcdio++ -lcdio -lserial -lkeypad /home/jacek/x-tools/arm-unknown-linux-gnueabihf/lib/gcc/arm-unknown-linux-gnueabihf/8.3.0/../../../../arm-unknown-linux-gnueabihf/bin/ld.bfd: cannot find -lkeypad collect2: error: ld returned 1 exit status make: *** [Makefile:24: autoradio] Fehler 1
库文件信息
- 库文件名:
libkeypad.a - 存放位置:执行make命令的当前目录(
$(shell pwd))
已尝试的操作
- 参考过静态库集成相关教程的建议,但引入后出现大量未定义引用
- 无法修改该库文件,为直接获取的成品
Rust编译器生成的C++接口文件
#include <cstdarg> #include <cstdint> #include <cstdlib> #include <ostream> #include <new> enum class Lock { Locked = 0, Unlocked = 1, UnlockedPowerOnly = 2, }; struct Keypad; using KpCallback = void(*)(char, uint32_t); extern "C" { Keypad *keypad_new(); void keypad_delete(Keypad *kp); int keypad_init(Keypad *kp); void keypad_run(Keypad *kp); void keypad_set_lock(Keypad *kp, Lock lock); Lock keypad_get_lock(Keypad *kp); void keypad_set_on_pressed(Keypad *kp, KpCallback callback, uint32_t arg); void keypad_set_on_released(Keypad *kp, KpCallback callback, uint32_t arg); } // extern "C"
内容的提问来源于stack exchange,提问作者Neppomuk
相关产品推荐
相关产品推荐

