curl 7 26 0移植問題

2021-06-21 23:49:35 字數 1579 閱讀 4159

在官網

./configure --prefix=/home/zhangfan/source_code/curl-7.26.0/build_lib/  --enable-shared --enable-static=no \

--build=i686-linux --host=mips-linux --target=mips-linux \

--with-zlib=/home/zhangfan/source_code/curl-7.26.0/build_lib/  --enable-nonblocking \

--disable-tftp --disable-telnet --disable-manual --enable-file \

--without-libssh2 --without-ssl --without-random --without-gnutls \

--without-nss --without-ca-bundle --without-libidn \

--disable-ipv6 --disable-largefile

重點在 --builde --host --target, 其他只是功能的選擇

build:

執行**編譯的主機,正常的話就是你的主機系統。這個引數一般由config.guess來猜就可以。當然自己指定也可以。

host:

編譯出來的二進位制程式所執行的主機,因為絕大多數是如果本機編譯,本機執行。所以這個值就等於build。只有交叉編譯的時候(也就是本機編譯,其他系統機器執行)才會build和host不同。用host指定執行主機。

target:

這個選項只有在建立交叉編譯環境的時候用到,正常編譯和交叉編譯都不會用到。他用build主機上的編譯器,編譯乙個新的編譯器(binutils, gcc,gdb等),這個新的編譯器將來編譯出來的其他程式將執行在target指定的系統上

配置完成後執行make clean; make install,  缺省會把編譯好的庫檔案放到lib/.libs 目錄下, 這裡有加入

--prefix選項,所以編譯好後也會在指定目錄下生產lib資料夾並把庫檔案拷貝到這個資料夾中。

其他程式中需要用到curl時直接鏈結編譯好的庫檔案即可。 就在編譯其他程式時鏈結curl庫出現如下錯誤

./lib/libcurl.so: could not read symbols: file in wrong format

庫檔案格式不對無法鏈結,經過查詢發現(執行file ./lib/libcurl.so)

file ./lib/libcurl.so

./lib/libcurl.so: elf 32-bit msb shared object, mips, mips32 version 1 (sysv), dynamically linked

編譯出來的libcurl.so 為 msb 大端模式,而程式需要的是小端,導致格式不對。

解決該問題的方法是在配置curl原始碼時

--host=mips-linux --target=mips-linux 改為 --host=mipsel-linux --target=mipsel-linux

即可把編譯好的庫檔案定為小端模式

移植安裝mysql mysql移植問題

今天在實際開發中對於mysql資料庫進行移植發生的問題來說下.開始把本地data中的資料庫檔案拷貝到另一台機子上test,執行show tables 可以看到資料庫表,但是對錶進行任何操作都報錯 表不存在 原以為mysql的資料庫檔案 frm copy stick到本地安裝mysqldb目錄的dat...

(四) 移植問題

下面講一下我們的windows專案的可移植性問題。總共從三個方面來講這個問題。一 unicode編碼 wchar t型別在unix 4位元組 和windows 2個位元組 中有不同的標準大小。你需要乙個較新版本的gcc 2.9.7或者是更新 來支援 fshort wchar選項來設定wchar t的...

mysql移植問題

今天在實際開發中對於mysql資料庫進行移植發生的問題來說下.開始把本地data中的資料庫檔案拷貝到另一台機子上test,執行show tables 可以看到資料庫表,但是對錶進行任何操作都報錯 表不存在 原以為mysql的資料庫檔案 frm copy stick到本地安裝mysqldb目錄的dat...