从 deb-src 在 Trusty 上构建完整的 gcc-3.3

从 deb-src 在 Trusty 上构建完整的 gcc-3.3

在 Ubuntu Trusty 中,有一个 gcc-3.3 的源包,它仅构建 libstdc++5。

有没有办法通过构建相应的 gcc 和 g++ deb 文件来共享或安装呢dpkg -i

答案1

是的,您可以使用下面的 bash 代码片段和补丁。它已在 amd64 上使用 trusty 进行了测试,但可能也适用于 ubuntu 的更高版本。它成功编译了 2007 年的旧版 qemu 0.9 版本。

gcc-3.3_3.3.6ds1_reenable_full_deb_pkgs_build.patch

# decode gcc-3.3_3.3.6ds1_reenable_full_deb_pkgs_build.patch
# (contains hard tabs which are unsupported by markdown)
cat <<EOF | uudecode
begin-base64-encoded 664 Z2NjLTMuM18zLjMuNmRzMV9yZWVuYWJsZV9mdWxsX2RlYl9wa2dzX2J1aWxkLnBhdGNo
VGhpcyBwYXRjaCByZWVuYWJsZXMgZGViIHBrZyBidWlsZGluZyBvZiBnY2Mg
YW5kIGcrKyBhbmQgb3RoZXJzCmluIGdjYy0zLjMtMy4zLjZkczEtMTZ1YnVu
dHUqIChhbmQgbGF0ZXIpIHNvdXJjZSBwYWNrYWdlcy4KCiMgZmV0Y2ggZ2Nj
IHNvdXJjZSB1c2luZyB3Z2V0IGFuZCB1bnBhY2sgLi4KREVCU1JDPWh0dHA6
Ly9hcmNoaXZlLnVidW50dS5jb20vdWJ1bnR1L3Bvb2wvdW5pdmVyc2UvClZC
PWdjYy0zLjNfMy4zLjZkczEKVlA9MjV1YnVudHU0CndnZXQgLS1uby1jaGVj
ay1jZXJ0aWZpY2F0ZSAkREVCU1JDL2cvZ2NjLTMuMy8kVkIub3JpZy50YXIu
Z3oKd2dldCAtLW5vLWNoZWNrLWNlcnRpZmljYXRlICRERUJTUkMvZy9nY2Mt
My4zLyRWQi0kVlAuZGlmZi5negp3Z2V0IC0tbm8tY2hlY2stY2VydGlmaWNh
dGUgJERFQlNSQy9nL2djYy0zLjMvJFZCLSRWUC5kc2MKZHBrZy1zb3VyY2Ug
LXggJFZCLSRWUC5kc2MKCiMgYWx0ZXJuYXRpdmVseSwgaWYgeW91IGhhdmUg
ZGViLXNyYyBzZXQgdXAgaW4gc291cmNlcy5saXN0CiNhcHQtZ2V0IHNvdXJj
ZSBnY2MtMy4zCgojIHJlZW5hYmxlIGRlYiBwa2cgYnVpbGRpbmcKY2QgZ2Nj
LTMuMyovCnBhdGNoIC1wMSA8IC4uL2djYy0zLjNfMy4zLjZkczFfcmVlbmFi
bGVfZnVsbF9kZWJfcGtnc19idWlsZC5wYXRjaAoKIyBmaXggZGhfbW92ZWZp
bGVzIHdpbGRjYXJkIGdsb2JiaW5nCiMgKGNtZGxpbmUgcGFyYW0gZ2xvYiB3
b3JrcyBvbmx5IHdpdGggREhfQ09NUEFUPTIpCmZvciBmIGluIGRlYmlhbi9y
dWxlcy5kL2JpbmFyeS0qLm1rCmRvIHNlZCAtaSAtZSAncy9kaF9tb3ZlZmls
ZXMvREhfQ09NUEFUPTIgXDAvJyAkZgpkb25lCgojIGNvbXBpbGUgYW5kIGJ1
aWxkIGRlYiBwYWNrYWdlcwpkZWJpYW4vcnVsZXMgY29udHJvbApkZWJ1aWxk
IGNsZWFuCmRlYnVpbGQgLXVjIC11cwpjZCAuLgoKLS0tIGdjYy0zLjMtMy4z
LjZkczEvZGViaWFuL2NvbnRyb2wubTQKKysrIGdjYy0zLjMtMy4zLjZkczEv
ZGViaWFuL2NvbnRyb2wubTQKQEAgLTM4LDcgKzM4LDYgQEAKICcpZG5sCiAK
IGlmZGVmKGBUQVJHRVQnLCBgJywgYAotaWZlbmFibGVkKGBkaXNhYmxlZCcs
YAogUGFja2FnZTogZ2NjYCdQVi1iYXNlCiBBcmNoaXRlY3R1cmU6IGFtZDY0
IGkzODYKIFNlY3Rpb246IGRldmVsCkBAIC01MSw3ICs1MCw2IEBACiAgVGhp
cyB2ZXJzaW9uIG9mIEdDQyBpcyBub3QgeWV0IGF2YWlsYWJsZSBmb3IgdGhp
cyBhcmNoaXRlY3R1cmUuCiAgUGxlYXNlIHVzZSB0aGUgY29tcGlsZXJzIGZy
b20gdGhlIGdjYy1zbmFwc2hvdCBwYWNrYWdlIGZvciB0ZXN0aW5nLgogJylg
J2RubAotJylgJ2RubCBkaXNhYmxlZAogJylgJ2RubCBuYXRpdmUKIAogaWZl
bmFibGVkKGBsaWJnY2MnLGAKQEAgLTU2LDkgKzU0LDkgQEAKIAogaWZlbmFi
bGVkKGBsaWJnY2MnLGAKIFBhY2thZ2U6IGxpYmdjY2AnR0NDX1NPYCdMUwot
QXJjaGl0ZWN0dXJlOiBpZmRlZihgVEFSR0VUJyxgYWxsJyxgaHBwYSBtNjhr
JykKK0FyY2hpdGVjdHVyZTogaWZkZWYoYFRBUkdFVCcsYGFsbCcsYGFueScp
CiBTZWN0aW9uOiBpZmRlZihgVEFSR0VUJyxgZGV2ZWwnLGBsaWJzJykKLVBy
aW9yaXR5OiBpZmRlZihgVEFSR0VUJyxgZXh0cmEnLHJlcXVpcmVkKQorUHJp
b3JpdHk6IGlmZGVmKGBUQVJHRVQnLGBleHRyYScsUFJJKG9wdGlvbmFsKSkK
IERlcGVuZHM6ICR7c2hsaWJzOkRlcGVuZHN9CiBpZmRlZihgVEFSR0VUJyxg
UHJvdmlkZXM6IGxpYmdjY2AnR0NDX1NPYCctVEFSR0VULWRjdjEKICcsYCcp
YCdkbmwKLS0tIGdjYy0zLjMtMy4zLjZkczEvZGViaWFuL3J1bGVzLmNvbmYK
KysrIGdjYy0zLjMtMy4zLjZkczEvZGViaWFuL3J1bGVzLmNvbmYKQEAgLTE2
OCw3ICsxNjgsNyBAQAogICBhZGRvbnMgPSBsaWJnY2MgbGliNjRnY2MgbGli
Y3h4IGxpYjY0Y3h4IGNkZXYgYysrZGV2CiBlbHNlCiAgIGxhbmd1YWdlcyA9
IGMgYysrCi0gIGFkZG9ucyA9IGxpYmN4eCAjbGliZ2NjIGNkZXYgYysrZGV2
IGxpYm5vZiBsaWJzIGxpYjY0Y3h4IGxpYm5vZiAKKyAgYWRkb25zID0gbGli
Y3h4IGxpYmdjYyBjZGV2IGMrK2RldiBsaWJub2YgbGlicyBsaWI2NGN4eCBs
aWJub2YgCiAgICNsYW5ndWFnZXMgKz0gYWRhIGY3NyBqYXZhIG9iamMgcGFz
Y2FsIHRyZWVsYW5nCiAgICNhZGRvbnMgKz0gZmFzdGphciBmZGV2IGZpeGlu
Y2wgamF2YWRldiBsaWJnMmMgbGliZmZpIGxpYmdjaiBsaWJvYmpjIFwKICAg
IwkgICBsaWI2NGZmaSBsaWI2NGdjaiBsaWI2NG9iamMgbGliNjRnMmMgb2Jq
Y2RldiBwcm90byBsaWJnbmF0IFwKLS0tIGdjYy0zLjMtMy4zLjZkczEvZGVi
aWFuL3J1bGVzLmRlZnMKKysrIGdjYy0zLjMtMy4zLjZkczEvZGViaWFuL3J1
bGVzLmRlZnMKQEAgLTE0MSwxMCArMTQxLDEwIEBACiAjIGxpYm9iamMxKS4K
IHdpdGhfY29tbW9uX2xpYnMgOj0geWVzCiAKLXdpdGhfZGV2IDo9IG5vCit3
aXRoX2RldiA6PSB5ZXMKIAogIyBtdWx0aWFyY2ggLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLXdpdGhfbXVsdGlhcmNoIDo9IG5vCit3aXRoX211bHRpYXJjaCA6
PSB5ZXMKIAogIyBDIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiBlbmFibGVkX2xh
bmd1YWdlcyA6PSBjCkBAIC00NzcsOSArNDc3LDkgQEAKICMgU2hhcmVkIGxp
YmdjYyAtLS0tLS0tLS0tLS0tLS0tLS0tLQogd2l0aF9zaGFyZWRfbGliZ2Nj
IDo9IHllcwogCi0jaWZlcSAoJCh3aXRoX2NvbW1vbl9saWJzKSx5ZXMpCi0j
ICB3aXRoX2xpYmdjYyA6PSB5ZXMKLSNlbHNlCitpZmVxICgkKHdpdGhfY29t
bW9uX2xpYnMpLHllcykKKyAgd2l0aF9saWJnY2MgOj0geWVzCitlbHNlCiBp
ZmRlZiBERUJfQ1JPU1MKICAgd2l0aF9saWJnY2MgOj0geWVzCiBlbHNlCkBA
IC00OTUsMTAgKzQ5NSwxMCBAQAogICAgICAgd2l0aF9zaGFyZWRfbGliZ2Nj
IDo9IG5vCiAgICAgZW5kaWYKICAgZW5kaWYKLSAgd2l0aF9saWJnY2MgOj0g
bm8KLSAgd2l0aF9zaGFyZWRfbGliZ2NjIDo9IG5vCisgICN3aXRoX2xpYmdj
YyA6PSBubworICAjd2l0aF9zaGFyZWRfbGliZ2NjIDo9IG5vCitlbmRpZgog
ZW5kaWYKLSNlbmRpZgogCiAjIHJ1biB0ZXN0c3VpdGUgLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIHdpdGhfY2hlY2sgOj0geWVzCkBAIC01MDMsNyArNTAzLDcg
QEAKICMgcnVuIHRlc3RzdWl0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLQogd2l0
aF9jaGVjayA6PSB5ZXMKICMgSWYgeW91IGRvbid0IHdhbnQgdG8gcnVuIHRo
ZSBnY2MgdGVzdHN1aXRlLCBzZXQgYHdpdGhfY2hlY2snIHRvIGBubycKLSN3
aXRoX2NoZWNrIDo9IGRpc2FibGVkIGJ5IGhhbmQKK3dpdGhfY2hlY2sgOj0g
bm8KIGlmZXEgKCQod2l0aF9iYXNlX29ubHkpLHllcykKICAgd2l0aF9jaGVj
ayA6PSBubwogZW5kaWYKLS0tIGdjYy0zLjMtMy4zLjZkczEvZGViaWFuL3J1
bGVzMgorKysgZ2NjLTMuMy0zLjMuNmRzMS9kZWJpYW4vcnVsZXMyCkBAIC02
Nyw4ICs2Nyw4IEBACiAgIGxpYmRpciAgICAgID0gbGliCiBlbmRpZgogYnVp
bGRsaWJkaXIJPSAkKGJ1aWxkZGlyKS8kKFRBUkdFVF9BTElBUykKLWdjY19s
aWJfZGlyCT0gJChQRikvJChsaWJkaXIpL2djYy1saWIvJChUQVJHRVRfQUxJ
QVMpLyQoVkVSKQotZ2NjX2xleGVjX2Rpcgk9ICQoUEYpLyQobGliZGlyKS9n
Y2MtbGliLyQoVEFSR0VUX0FMSUFTKS8kKFZFUikKK2djY19saWJfZGlyCT0g
JChQRikvbGliL2djYy1saWIvJChUQVJHRVRfQUxJQVMpLyQoVkVSKQorZ2Nj
X2xleGVjX2Rpcgk9ICQoUEYpL2xpYi9nY2MtbGliLyQoVEFSR0VUX0FMSUFT
KS8kKFZFUikKICNnY2NfbGliX2Rpcgk9ICQoUEYpLyQobGliZGlyKS9nY2Mv
JChUQVJHRVRfQUxJQVMpLyQoVkVSKQogI2djY19sZXhlY19kaXIJPSAkKFBG
KS9saWJleGVjL2djYy8kKFRBUkdFVF9BTElBUykvJChWRVIpCiAKLS0tIGdj
Yy0zLjMtMy4zLjZkczEvZGViaWFuL3J1bGVzLmQvYmluYXJ5LWJhc2UubWsK
KysrIGdjYy0zLjMtMy4zLjZkczEvZGViaWFuL3J1bGVzLmQvYmluYXJ5LWJh
c2UubWsKQEAgLTEsNCArMSw0IEBACi0jYXJjaF9iaW5hcmllcyA6PSBiYXNl
ICQoYXJjaF9iaW5hcmllcykKK2FyY2hfYmluYXJpZXMgOj0gYmFzZSAkKGFy
Y2hfYmluYXJpZXMpCiAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAjIGdjYy1iYXNlCi0tLSBnY2MtMy4zLTMuMy42ZHMxL2RlYmlhbi9y
dWxlcy5kL2JpbmFyeS1nY2MubWsKKysrIGdjYy0zLjMtMy4zLjZkczEvZGVi
aWFuL3J1bGVzLmQvYmluYXJ5LWdjYy5tawpAQCAtODUsNiArODUsOSBAQAog
CiAJcm0gLWYgJChkKS8kKFBGKS8kKGxpYmRpcikvbGliZ2NjX3Muc28KIAls
biAtc2YgLyQobGliZGlyKS9saWJnY2Nfcy5zby4kKEdDQ19TT05BTUUpICQo
ZCkvJChnY2NfbGliX2RpcikvbGliZ2NjX3Muc28KKwlsbiAtc2YgL3Vzci8k
KGxpYmRpcikvY3J0MS5vICQoZCkvJChnY2NfbGliX2RpcikvY3J0MS5vCisJ
bG4gLXNmIC91c3IvJChsaWJkaXIpL2NydGkubyAkKGQpLyQoZ2NjX2xpYl9k
aXIpL2NydGkubworCWxuIC1zZiAvdXNyLyQobGliZGlyKS9jcnRuLm8gJChk
KS8kKGdjY19saWJfZGlyKS9jcnRuLm8KIGlmZXEgKCQoYmlhcmNoKSx5ZXMp
CiAJcm0gLWYgJChkKS8kKFBGKS8kKGxpYjY0KS9saWJnY2Nfcy5zbwogCWxu
IC1zZiAvJChsaWI2NCkvbGliZ2NjX3Muc28uJChHQ0NfU09OQU1FKSAkKGQp
LyQoZ2NjX2xpYl9kaXIpL2xpYmdjY19zXzY0LnNvCg==
====
EOF

bash 代码片段

# fetch gcc source using wget and unpack ..
DEBSRC=http://archive.ubuntu.com/ubuntu/pool/universe/
VB=gcc-3.3_3.3.6ds1
VP=24ubuntu5
wget --no-check-certificate $DEBSRC/g/gcc-3.3/$VB.orig.tar.gz
wget --no-check-certificate $DEBSRC/g/gcc-3.3/$VB-$VP.diff.gz
wget --no-check-certificate $DEBSRC/g/gcc-3.3/$VB-$VP.dsc
dpkg-source -x $VB-$VP.dsc

# .. alternatively, if you have deb-src set up in sources.list
#apt-get source gcc-3.3

# reenable deb pkg building
cd gcc-3.3*/
patch -p1 < ../gcc-3.3_3.3.6ds1_reenable_full_deb_pkgs_build.patch

# fix dh_movefiles wildcard globbing
# (cmdline param glob works only with DH_COMPAT=2)
for f in debian/rules.d/binary-*.mk
do sed -i -e 's/dh_movefiles/DH_COMPAT=2 \0/' $f
done

# compile and build deb packages
debian/rules control
debuild clean
debuild -uc -us
cd ..

# install results
sudo dpkg -i {cpp,gcc,g++}-3.3*.deb libstdc++5{_3.3.6,-3.3-dev}*.deb

不是安装libgcc1_3.3.6*deb。它可能与主机上已安装的版本冲突,并且 gcc-3.3 不需要它来工作,因为主机上存在的符号链接到。和 也是libgcc_s.so如此crtn.o。gcc-3.3 在链接构建的对象时需要这些,即调用时。它们是 libc6 包的一部分(此处)。构建过程将安装下面的链接(您的系统上的主机三元组可能不同)以发现安装的 libc6 版本。crti.ocrt1.old/usr/lib/gcc-lib/x86_64-linux-gnu/3.3.6/x86_64-linux-gnuld

您不需要更改任何内容,但如果您需要根据自己的喜好调整这些链接,您可以在构建 deb 包之前修改它们。请查看提供的补丁文件的末尾。此类更改的相关文件是debian/rules.d/binary-gcc.mk

相关内容