amd64架構的ubuntu系統上如何從原碼編譯製作32位(i386)的deb包?

编译打包和其他
回复
calvin.ngei
帖子: 178
注册时间: 2007-10-14 13:22

amd64架構的ubuntu系統上如何從原碼編譯製作32位(i386)的deb包?

#1

帖子 calvin.ngei » 2011-04-03 0:38

編譯打包新版本的軟件,我通常是這樣做的:

代码: 全选

apt-get source xxxxxx
這樣獲取到舊版 xxxxxx 的原代碼。
下載新版本 xxxxxx 的原代碼,並解開:

代码: 全选

wget -c http://www.xxxxxx.org/xxxxxx.tar.gz
tar zxf xxxxxx.tar.gz
把舊版本原代碼目錄下的 debian 目錄複製到新版本原代碼目錄下:

代码: 全选

cp -avp xxxxxx-old-version/debian xxxxxx-new-version/
修改新版本原代碼目錄內debian目錄下的changelog文件:

代码: 全选

cd xxxxxx-new-version
nano debian/changelog
在changelog文件的開頭將上一版本訊息複製黏貼一次,改舊版本號為新版本號,修改升級註釋、打包人訊息、打包時間,保存。最後,執行 debuild 命令編譯製作新版本的 deb 包:

代码: 全选

debuild
打包完成後,返回上一層目錄,安裝新版本的 xxxxxx :

代码: 全选

cd ..
sudo dpkg -i xxxxxx_new-version_(amd64 or i386).deb
這樣編譯打包新版本軟件很是方便。
不過,amd64位的 ubuntu 上,默認打出來的 deb 包是 amd64 的,32位系統上打出來的包是 i386 的。
現在,我希望在 amd64 的系統上編譯製作 i386 的 deb 包。

我試過修改原碼目錄內的 Makefile ,指定編譯為 32 位 binary。gcc 交叉編譯沒有問題,編譯出來的東西用 file 命令查看的確是 32 位的。可是編譯完成後,在生成 deb 包的時候,debuild 仍然以為要製作 64 位 deb 包。它檢查到編譯出來的東西是 32 位的,而它嘗試打出 amd64 的包,發現不符,拒絕打包,給出架構不同的錯誤訊息後退出,沒有生成任何 deb 包。

debuild 似乎沒有指定系統架構的參數選項。請各位高手指點,怎樣在 amd64 的 ubuntu 系統下編譯製作 i386 的 deb 包?
calvin.ngei
帖子: 178
注册时间: 2007-10-14 13:22

Re: amd64架構的ubuntu系統上如何從原碼編譯製作32位(i386)的deb包?

#2

帖子 calvin.ngei » 2011-04-03 1:32

不好意思各位。
原來可以加 -ai386 參數:

代码: 全选

debuild -ai386
但是還有問題。
回复