在官網
./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...