I have a custom library I made called AceLibraryLinux and I'm trying to use it in a C++ Linux program I made called RumPi (Raspberry Pi application I'm making). The .a file is called "AceLibraryLinux.a" however, the make file is not finding the lib. I tried specifying the path with -L and modifying the make build command but I havent been able to get it working. Here is a screenshot of the directory structure
And this is what the MakeFile currently looks like. LDFlags was not there originally, I tried adding it in an attempt to fix the issue so it is most likely incorrect:
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
Thanks again, as the commenters pointed out, the name on LDLIBS needed to be changed to "AceLibraryLinux.a" and I removed the LDFLAGS line since it was not necessary or being used. Here is the fixed make file:
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