cmakeListエラー致命的なエラーprotobuf.pb.hをコンパイルするとき:そのようなファイルまたはディレクトリ:/いるProtobuf / port_def.incグーグルありません

ファイルを書き込むいる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のバージョン

 

調製条件:

1.インストールして作るGCCコンパイラ

2.他の取付アームまたはアームLinuxのコンパイラ

あなたは-gccの腕-linuxの-vとgcc -vとコンパイラのバージョンを確認することができます。

 

公式サイトからいるProtobuf-2.5.0.tar.gzをダウンロードしてください。

最初のステップは、x86ライブラリとprotocのバージョンをコンパイルすることです、

次のシーケンスのコマンドを実行します

タール-zxvfいるProtobuf-2.5.0.tar.gz

いるProtobuf-2.5.0 CD

。/構成、設定

メイク

メイクチェック

sudo makeがインストール

その後、我々は次のステップでは、上記の手順を小さくすることはできませんので、Linux上で実行することができますprotocにあるので、その後、腕のバージョンをコンパイルを開始する必要があり、LinuxのいるProtobufライブラリとprotocのバージョンをコンパイルしています。

腕のバージョンをコンパイルし、次のスタート

きれいにします

./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の後ろに置くことができます。

公開された101元の記事 ウォン称賛73 ビュー120 000 +

おすすめ

転載: blog.csdn.net/usstmiracle/article/details/103469205