为 C++ Linux 项目构建 MakeFile 时未找到自定义静态库 (.a lib)

问题描述 投票:0回答:1

我有一个名为 AceLibraryLinux 的自定义库,我正在尝试在我制作的名为 RumPi(我正在制作的 Raspberry Pi 应用程序)的 C++ Linux 程序中使用它。 .a 文件名为“AceLibraryLinux.a”,但是 make 文件未找到该库。我尝试使用 -L 指定路径并修改 make build 命令,但我无法让它工作。这是目录结构的截图

这就是 MakeFile 当前的样子。 LDFlags 最初不存在,我尝试添加它以尝试解决问题,因此它很可能是不正确的:

CXX = g++
CXXFLAGS = -std=c++11
LDLIBS = -lwiringPi -lpthread -li2c -lAceLibraryLinux
LDFLAGS = -L. -lAceLibraryLinux -static

HEADERS = ./AceLinux.h ./Common.h Components/Headers/RumPi.h Components/Headers/Component.h Components/Headers/AnalogDigitalConverterComponent.h Components/Headers/Vehicle.h Components/Headers/Motor.h Components/Headers/Receiver.h Components/Headers/DualLED.h Components/Headers/LED.h Components/Headers/RGBLED.h Components/Headers/Relay.h Components/Headers/LCD1602.h Components/Headers/PCF8591.h Components/Headers/GasData.h Components/Headers/GasSensor.h Components/Headers/RotaryEncoder.h Components/Headers/HumiditySensor.h Components/Headers/SoundSensor.h Components/Headers/BMP180.h Components/Headers/BMP280.h Components/Headers/HCSR501.h Components/Headers/PiCamera.h Components/Headers/MCP3008.h
OBJECTS = RumPi.o Vehicle.o Motor.o Receiver.o DualLED.o LED.o RGBLED.o Relay.o LCD1602.o PCF8591.o GasData.o GasSensor.o RotaryEncoder.o HumiditySensor.o SoundSensor.o BMP180.o BMP280.o HCSR501.o PiCamera.o MCP3008.o

default: RumPi

RumPi: $(OBJECTS)
    $(CXX) $(CXXFLAGS) $^ $(LDLIBS) -o $@

%.o: Components/Implementations/%.cpp
    $(CXX) $(CXXFLAGS) -c -o $@ $<

$(OBJECTS): $(HEADERS)

clean:
    -rm -f $(OBJECTS)
    -rm -f RumPi
c++ makefile lib .a
1个回答
0
投票

再次感谢,正如评论者所指出的,LDLIBS 上的名称需要更改为“AceLibraryLinux.a”,并且我删除了 LDFLAGS 行,因为它没有必要或正在使用。这是固定的 make 文件:

CXX = g++
CXXFLAGS = -std=c++11
LDLIBS = -lwiringPi -lpthread -li2c AceLibraryLinux.a

HEADERS = ./AceLinux.h ./Common.h Components/Headers/RumPi.h Components/Headers/Component.h Components/Headers/AnalogDigitalConverterComponent.h Components/Headers/Vehicle.h Components/Headers/Motor.h Components/Headers/Receiver.h Components/Headers/DualLED.h Components/Headers/LED.h Components/Headers/RGBLED.h Components/Headers/Relay.h Components/Headers/LCD1602.h Components/Headers/PCF8591.h Components/Headers/GasData.h Components/Headers/GasSensor.h Components/Headers/RotaryEncoder.h Components/Headers/HumiditySensor.h Components/Headers/SoundSensor.h Components/Headers/BMP180.h Components/Headers/BMP280.h Components/Headers/HCSR501.h Components/Headers/PiCamera.h Components/Headers/MCP3008.h
OBJECTS = RumPi.o Vehicle.o Motor.o Receiver.o DualLED.o LED.o RGBLED.o Relay.o LCD1602.o PCF8591.o GasData.o GasSensor.o RotaryEncoder.o HumiditySensor.o SoundSensor.o BMP180.o BMP280.o HCSR501.o PiCamera.o MCP3008.o

default: RumPi

RumPi: $(OBJECTS)
    $(CXX) $(CXXFLAGS) $^ $(LDLIBS) -o $@

%.o: Components/Implementations/%.cpp
    $(CXX) $(CXXFLAGS) -c -o $@ $<

$(OBJECTS): $(HEADERS)

clean:
    -rm -f $(OBJECTS)
    -rm -f RumPi
© www.soinside.com 2019 - 2024. All rights reserved.