因項目需要,在AIX上編譯curl-7.37.1,
configure執行ok
make時報錯如下
source='progress.c' object='libcurl_la-progress.lo' libtool=yes DEPDIR=.deps depmode=aix /bin/sh ../depcomp /bin/sh ../libtool --tag=CC --mode=compile cc -qlanglvl=ansi -DHAVE_CONFIG_H -I../include/curl -I../include -I../include -I../lib -I../lib -DBUILDING_LIBCURL -qthreaded -qnoansialias -qhalt=e -O2 -c -o libcurl_la-progress.lo `test -f 'progress.c' || echo './'`progress.c
libtool: compile: cc -qlanglvl=ansi -DHAVE_CONFIG_H -I../include/curl -I../include -I../include -I../lib -I../lib -DBUILDING_LIBCURL -qthreaded -qnoansialias -qhalt=e -O2 -c -M progress.c -DPIC -o .libs/libcurl_la-progress.o
cc: 1501-230 内部編譯器錯誤;請與您的服務代表聯系
make:1254-004 上一個指令的錯誤碼是 1。
很明顯,是編譯lib/progress.c檔案時,導緻終止。
檢視progress.c檔案(其中花費大約2小時,嘗試是哪部分大緻失敗的),問題出在max5data函數的下面2行代碼導緻的。
else if(bytes < CURL_OFF_T_C(10000) * ONE_TERABYTE)
/* up to 10000TB, display without decimal: XXXXT */
snprintf(max5, 6, "%4" CURL_FORMAT_CURL_OFF_T "T", bytes/ONE_TERABYTE);
嘗試替換等方法都不管用,索性注釋掉這幾行(實際上,傳輸T級别的檔案基本沒有),編譯通過。
/*
else if(bytes < CURL_OFF_T_C(10000) * ONE_TERABYTE)
up to 10000TB, display without decimal: XXXXT
snprintf(max5, 6, "%4" CURL_FORMAT_CURL_OFF_T "T", bytes/ONE_TERABYTE);
*/
什麼原因,高手們,給個答案,目前我懶得去深究了。
64位動态庫編譯
1)export OBJECT_MODE=64,設定cc編譯環境為64位
2)configure,生成編譯配置
3)make,編譯生成