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 機能に関連しています。以下にそれらの1つを含めました:

/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 ++に置き換えましたが、これで動作します。

関連情報