You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已指定目录但链接器仍无法找到静态库问题求助

静态库集成问题:编译正常但链接阶段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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 23:13:13