Как сделать файлы моего проекта со статической библиотекой (Snappy)

У меня есть проект с использованием библиотеки Snappy и makefile для него:

CXX=g++
CXXFLAGS=-c -Wall
LFLAGS=
OBJS=main.o Utilities.o FramingFormat.o Crc32.o

snappy.out: $(OBJS)
$(CXX) $(LFLAGS) $^ -o $@

$(OBJS): %.o:%.cpp
$(CXX) $(CXXFLAGS) $< -o $@
clean:
-rm -rf *.o
.PHONY: clean

Библиотека Snappy была построена ранее.

Теперь я запускаю свой make-файл, у меня есть ошибки:

g++  main.o Utilities.o FramingFormat.o Crc32.o -o snappy.out
FramingFormat.o: In function `compressToFrame(char*, unsigned long, char*, unsigned long*)':
FramingFormat.cpp:(.text+0x5b): undefined reference to `snappy_compress'
FramingFormat.o: In function `uncompressFromFrameData(char*, unsigned long, char*, unsigned long*)':
FramingFormat.cpp:(.text+0x14a): undefined reference to `snappy_uncompress'
FramingFormat.o: In function `maxFrameLength(unsigned long)':
FramingFormat.cpp:(.text+0x2bf): undefined reference to `snappy_max_compressed_length'
FramingFormat.o: In function `uncompressedDataLength(char*, unsigned long, unsigned long*)':
FramingFormat.cpp:(.text+0x2f8): undefined reference to `snappy_uncompressed_length'
collect2: error: ld returned 1 exit status
make: *** [snappy.out] Error 1

Это потому, что makefile не знает, что я использую snappy libs, как решить эту проблему? Это мои каталоги:

  • мгновенный / Каталог-с мгновенным
  • мгновенный / Каталог-с-проекты с использованием-мгновенным
[РЕДАКТИРОВАТЬ] Мой make-файл выглядит так:

CXX=g++
CXXFLAGS=-c -Wall
LFLAGS=
OBJS=main.o Utilities.o FramingFormat.o Crc32.o

snappy.out: $(OBJS)
$(CXX) $(LFLAGS) $^ -L"../../SnappyLib1.1.2/SnappyLib1.1.2" -o $@

$(OBJS): %.o:%.cpp
$(CXX) $(CXXFLAGS) $< -L"../../SnappyLib1.1.2/SnappyLib1.1.2" -o $@
clean:
-rm -rf *.o
.PHONY: clean

0

Решение

используйте -lsnappy в опции компоновщика, предполагая, что у вас есть snappy.so или snappy.a в доступном каталоге. или вам может понадобиться использовать каталог явно

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]