ファイルを書き込むいるProtobuf、コンパイラは、二つのファイルの.ccと.hファイルを生成します。
輸出LD_LIBRARY_PATH =は/ usr / local / libに
protoc --cpp_out =。/ forward_protobuf.proto
単一のコンパイル・コマンド:G ++ -o pub_boche2.out publish_boche.cppいるProtobuf / forward_protobuf.pb.cc -lprotobuf -lpthread。-std = C ++ 11 -lpaho-mqtt3as
しかし、中cmakeListの状況とそこにコンパイルされています。
:/mnt/hgfs/V2X_GT_code/parkingProject/appv_forward/src/appv_forward.cpp:4から
/mnt/hgfs/V2X_GT_code/parkingProject/appv_forward/src/../inc/../protoBuf/forward_protobuf.pb.h:10 :40:致命的なエラー:そのようなファイルまたはディレクトリ:/いるProtobuf / port_def.inc googleの
コンパイルは終了しません。
この時点で、あなたは環境を実行したいのかを確認する必要がX86アーキテクチャまたはアーキテクチャアームであります
このディレクトリには、ライブラリの腕であります
/opt/genvict-imx-fb/4.1.15-1.2.1/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/lib
このディレクトリには、X86のライブラリファイルです
/ usr / local / libに
/ usr / libに
使用readelfが-hライブラリファイルは、 あなたはスキーマファイルを表示することができます
コンパイラアームいるProtobufライブラリのシステムLinuxのバージョン
あなたは-gccの腕-linuxの-vとgcc -vとコンパイラのバージョンを確認することができます。
公式サイトからいるProtobuf-2.5.0.tar.gzをダウンロードしてください。
最初のステップは、x86ライブラリとprotocのバージョンをコンパイルすることです、
タール-zxvfいるProtobuf-2.5.0.tar.gz
./configure --host =アーム-Linuxの--with-protoc = protoc
何が出て腕コンパイルするライブラリの間違ったバージョンを行っていない場合は、その位置であります
いるProtobuf-2.5.0 / srcに/ .LIBS /
対応する値がMACHIN ARMであれば、それが行われている、ファイルの情報を表示するには、readelfが-h libprotobuf-lite.aを使用してください。
このライブラリをインストールした後、現在のディレクトリの下に解凍し、生成されます/src/.libs/以下
ソリューション:それはそうであるならばX86アーキテクチャを必要としない、あなたのクロスコンパイラツールチェーン(腕)の設定ディレクトリに再度追加
しかし、コンパイル時エラーが意志
ディレクトリ変更 彼らの実際の状況に応じて書き込むための#ディレクトリの必要性を。
--prefix =は./configure /opt/genvict-imx-fb/4.1.15-1.2.1/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr --host = ARM-Linuxの--with- = Protoc Protoc
makeは#をインストールし
、このような場合は、エラーがコンパイルされません
図書館は区別する必要がある静的ライブラリやDLLが含まれています
#cmake verson
cmake_minimum_required(バージョン2.8)
#add GDBの
セット(CMAKE_CXX_FLAGS_DEBUG "$ ENV {CXXFLAGS} -O0 -Wall -g2 -ggdb")
#project名
プロジェクト(v2x_pad_OBU_can)
#include cmakeのファイルが
含まれ(../ toolchain.cmake)
#compileパラメータ
セット(CMAKE_CXX_FLAGS "-std = C ++ 11 $ {CMAKE_CXX_FLAGS}")
#set出力経路
セット(EXECUTABLE_OUTPUT_PATH $ {PROJECT_SOURCE_DIR} / bin)に
セット(LIBRARY_OUTPUT_PATH $ {PROJECT_SOURCE_DIR} / LIB)
#headファイルパス
include_directories(
INC
../libcomsocket/inc
../libv2xgeneral/inc
../libv2xgeneral/inc/msg
../libv2xgeneral/inc/codec
../libv2xgeneral/inc/rapidjson
_install /含みます
)
#sourceディレクトリ
aux_source_directory(SRC SRC_LIST)
#linkディレクトリ
link_directories(
../../libcomsocket/lib
../../libv2xgeneral/lib
../_install/lib
../lib
)
#add実行ファイル
add_executable($ {PROJECT_NAME} $ {SRC_LIST})
#addリンクライブラリ
target_link_libraries($ {PROJECT_NAME} comsocket v2xgeneralのpthread PAHO-mqtt3as libprotobuf.a libprotoc.a)
静的ライブラリは、名前全体を記述する必要があります
動的オブジェクトは、接尾辞.soが削除の前にとlibの後ろに置くことができます。