QT IED 開發 and protobuf 編譯

2021-09-27 13:03:31 字數 2727 閱讀 5464

qt5.10.0

sudo apt-get install libgl1-mesa-dev

sudo apt-get install libffi-dev

sudo apt-get install autoconf automake libtool curl make g++ unzip

protobuf 3.6.1

curl 7.53.0

openssl 1.1.0g

sudo apt install openssl

sudo apt install libssh2-1-dev

sudo apt install libssl-dev

protobuf

$ ./configure

$ make

$ sudo make install

$ sudo ldconfig # refresh shared library cache.

交叉編譯樹梅派

./configure --host=arm-linux-gnueabihf cc=arm-linux-gnueabihf-gcc cxx=arm-linux-gnueabihf-g++ --prefix=/home/konyun/raspberrypi/protobuf

在linux上編譯google protobuff時,configure 預設選項是生成動態庫,即libprotobuf.so檔案。如果同時在多個動態庫(動態庫以dlopen方式動態載入)中使用同一buff結構,則執行時會報錯誤:

ibprotobuf error google/protobuf/descriptor_database.cc:57] file already exists in database: foo/foo.proto libprotobuf fatal google/protobuf/descriptor.cc:862] check failed: generated_database_->add(encoded_file_descriptor, size): terminate called after throwing an instance of 『google::protobuf::fatalexception』 what(): check failed: generated_database_->add(encoded_file_descriptor, size):

為了解決這個問題,google protobuff,則不能以動態庫的形式呼叫,改用靜態庫的形式在編譯時載入。

編譯google protobuff時,在configure 時加上選項:

configrue --disable-shared

libs/assert.o: relocation r_x86_64_32 against `a local symbol』 can not be used when ****** a shared object; recompile with -fpic .libs/assert.o: could not read symbols: bad value

解決該問題,需要重新編譯google protobuff庫,並新增編譯選項:-fpic

以文字形式開啟google buff**目錄下的configure檔案,在把第2575至2578行修改為如下:

if test 「xacc

venv

cfla

gsse

t"="

x";t

hen:

cfla

gs="

−fpi

c"fi

ifte

st"x

" = "x"; then : cflags="-fpic" fi if test "x

acc​ve

​nvc

​fla

gss​

et"=

"x";

then

:cfl

ags=

"−fp

ic"f

iift

est"

x」 = 「x」; then : cxxflags="-fpic"

curl 7.53.0

$ make

$ sudo make install

$ sudo ldconfig # refresh shared library cache.

交叉編譯樹梅派

./configure --host=arm-linux-gnueabihf cc=arm-linux-gnueabihf-gcc cxx=arm-linux-gnueabihf-g++ --with-ssl --enable-shared --enable-static --disable-dict --disable-ftp --disable-imap --disable-ldap --disable-ldaps --disable-pop3 --disable-proxy --disable-rtsp --disable-smtp --disable-telnet --disable-tftp --disable-zlib --without-ca-bundle --without-gnutls --without-libidn --without-librtmp --without-libssh2 --without-nss --without-zlib

zlib的命令安裝就三條,依次輸入執行,簡單粗暴:

sudo apt-get install ruby

sudo apt-get install zlib1g

sudo apt-get install zlib1g.dev

mac開發 ios開發

但是,任何乙個作業系統上,只使用開發語言就去開發程式是不行的。還需要有介面庫。尤其是支援object c的介面庫。mac上使用oc開發應用程式,都會使用xcode這個ide,整合開發工具,xcode中整合了gui介面庫。可以直接拖動控制項到介面上。objective c是一門語言,而cocoa 是這...

Quartz開發 基礎開發

開發環境.net 4.5.1 quartz.dll v2.4.1.0 依賴下面的dll common.loggin.dll v3.3.1.0 依賴下面的dll common.loggin.core.dll v3.3.1.0 本次教程只介紹基於quartz jobs.xml配置檔案方式的開發,這也是簡...

Spark開發 開發總覽

spark 的層次 開發視角多涉及兩種層面。1.一種是spark自身的開發,這類開發涉及到j a和sala以及一些底層的原始碼。了解這些內容,主要用於底層框架的開發以及針對spark的二次開發,也就是spark架構設計與實現。要求深入spark原始碼研究和二次開發,這些一般是大資料平台的設計與開發,...