FreeBSD - protobuf 연결 문제

FreeBSD - protobuf 연결 문제

Linux에서 테스트한 작은 응용 프로그램이 있는데 잘 작동합니다. 이제 FreeBSD에서 동일한 코드를 작성하고 싶습니다. FreeBSD에서 빌드하려면 Makefile을 약간 변경해야 합니다. 이것은 내 수정된 버전입니다.

CXX := gcc
LDFLAGS += -L/usr/local/lib -R/usr/local/lib -L/usr/lib -R/usr/lib -L/usr/local/include -R/usr/local/include -L/usr/include -R/usr/include
CXXFLAGS += -pedantic -Wall -Wextra  -std=c++17 
LIBS += -lprotobuf -lstdc++
INCL += -I/usr/local/include

SRCS := my_app.cpp \
        file1.pb.cc \
        file2.pb.cc 
                
OBJS := $(SRCS:% = %.o)
target := my_app

all:
    $(CXX) $(OBJS) -o $(target) $(LIBS) $(INCL) $(LDFLAGS)

%.o:%.cpp
    $(CXX) $(CXXFLAGS) $(INCL) $(LDFLAGS) -c $^ -o $@

clean:
    rm -rf *o $(target)

문제는 링커 오류가 많이 발생한다는 것입니다. 이 모든 것은 Google protobuf 기능과 관련이 있습니다. 아래에 그 중 하나를 포함시켰습니다:

/usr/local/bin/ld: /tmp//ccpo2Qek.o: in function `main':
my_app.cpp:(.text+0x3a4): undefined reference to `google::protobuf::MessageLite::SerializeAsString[abi:cxx11]() const'

애플리케이션을 빌드하려면 gmake를 사용합니다. .NET을 사용하여 FreeBSD 시스템에 protobuf를 설치했습니다 pkg install. 일부 Google protobuf .h 파일 /usr/local/include과 일부 protobuf .so 라이브러리를 에서 찾을 수 있습니다 /usr/local/lib. 이 위치를 추가하려고 시도했지만 LDFLAGS여전히 작동하지 않습니다.

도움을 주셔서 미리 감사드립니다.

답변1

gcc를 C++로 교체했는데 이제 작동합니다.

관련 정보