天天看點

curl-7.37.1在AIX上編譯失敗“cc: 1501-230 内部編譯器錯誤;請與您的服務代表聯系”

    因項目需要,在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,編譯生成