导航:首页 > 源码编译 > Linux编译程序出错

Linux编译程序出错

发布时间:2025-02-15 14:53:42

① 涓轰粈涔埚湪linux鐜澧冧笅缂栬疟java绋嫔簭浼氩嚭鐜痈us_ error阌栾锛燂纻锛

链杩戝湪璁哄潧涓婄湅鍒颁竴涓绋嫔簭锻桦湪璇㈤梾Bus Error镄勯梾棰樸备粬链変竴涓闱炲父绠鍗旷殑娴嬭瘯绋嫔簭锛屽皢涓涓狲hort鏁扮粍涓绗浜屼釜鎴愬憳鍙橀噺镄勫湴鍧闄勭粰涓涓猧nt鍨嬬殑鎸囬拡锛屾帴镌缁栾ユ寚阍堣祴鍊硷纴澶ц嚧浠g爜濡备笅锛
short array[10];
int * p = (int *) &array[1];*p = 1;
杩愯岀殑骞冲彴鏄疭olaris for SPARC锛屼娇鐢ㄧ殑缂栬疟鍣ㄦ槸GCC锛岀▼搴忔墽琛屽埌鎸囬拡璧嫔肩殑镞跺欑殑鍑虹幇Bus Error鍑洪敊淇℃伅锛岀▼搴廲oremp銆备粬瑙夊缑闱炲父濂囨锛屼唬镰佸湪X86骞冲彴杩愯岀殑寰埚ソ銆傚叾瀹炶繖涓闂棰桦畬鍏ㄦ槸鐢变簬CPU纭浠朵笉钖屾墍阃犳垚镄勚
Bus Error阃氩父閮芥槸锲犱负闱炲归绨璁块梾阃犳垚镄勚侰PU鍦ㄨ捐′笂涓轰简镐ц兘涓婄殑钥冭槛锛岃佹眰寰呰块梾锛屾搷浣灭殑鏁版嵁鍦板潃閮借佸归绨銆傚傛灉鍙戠幇娌℃湁瀵归绨镄勮块梾锛屽氨浼氩悜褰揿墠杩涚▼鍙戝嚭SIGBUS淇″彿锛屼娇绋嫔簭宕╂簝銆俣ISC鍖呮嫭SPARC閮芥槸杩欑岖被鍨嬬殑鑺鐗囥傝孹86鏋舵瀯灏辨病链夎繖绉嶅归绨瑕佹眰銆傛墍浠ヨ繖娈典唬镰佸湪Solaris 10 for X86涓嬮溃娌℃湁闂棰桡纴褰撶劧杩欐槸链夋ц兘镄勪唬浠枫侭us Error涔熸湁鍙鑳芥槸锲犱负链哄櫒鐗╃悊闂棰樻垨钥呰块梾镞犳晥鐗╃悊鍦板潃锛屼絾杩欑嶆儏鍐甸潪甯稿皯瑙併
涓婇溃镄勪唬镰佹f槸杩欑嶉潪瀵归绨璁块梾阃犳垚镄凚us Error銆俿hort鏄涓や釜瀛楄妭锛屽叾鍦板潃锅忕Щ閲忓繀鏄2镄勫嶆暟銆傝屽逛簬int鎸囬拡𨱒ヨ达纴闇瑕佸亸绉婚噺鍦板潃鏄4镄勫嶆暟镄勬暟鎹锛屾墍浠ョ洿鎺ョ敤int鎸囬拡𨱒ユ搷浣滃湴鍧锛屽氨寰堟湁鍙鑳藉艰嚧绯荤粺鍙戝嚭SIGBUS淇″彿锛岀▼搴忓穿婧冦
杩欐电▼搴忓傛灉鐢⊿un Studio缂栬疟鍣ㄧ殑璇濓纴杩愯屽氨娌℃湁闂棰樸傝繖鏄锲犱负Sun Studio榛樿ゅ32浣岖紪璇戜娇鐢ㄧ殑鍙傛暟鏄-xmemalign=8i锛屽叾涓璱阃夐”璁剧疆鏄庣‘涓崭细浜х敓杩欑峉IGBUS淇″彿銆备笉杩囧傛灉缂栬疟鎴64浣岖▼搴忥纴Sun Studio浣跨敤镄-xmemalign=8s锛屽叾涓璼阃夐”璁剧疆镒忓懗瀵硅繖绉嶉潪瀵归绨璁块梾浜х敓SIGBUS淇″彿锛屼粛镞т细阆囧埌杩欎釜阌栾銆
褰撶劧浣犱篃鍙浠ュ潥鎸佸湪SPARC涓娄娇鐢℅CC铡荤紪璇戣繖绉崭唬镰併侴CC链変竴涓猅ype Attributes鐗规э纴鍦ㄩ渶浜哄伐瀵归绨镄勫彉閲忓悗锷犱笂锛歘_attribute__ ((aligned (4))); 4灏辨槸鎸囧畾锅忕Щ閲忋傛瘆濡傦细
short array[10] __attribute__ ((aligned (4)))锛
涓嶈繃杩欎釜灞炴у彧瀵筁inker杩炴帴鍣ㄥ彲瑙佺殑鍙橀噺链夋晥锛屼篃灏辨槸璇村筶ocal variable镞犳晥銆傝屼笖杩欑岖壒镐у彧鑳界収椤惧埌璇ユ暟缁勶纴鍗崇涓涓鍏幂礌锛屽苟涓崭负鏁扮粍镄勬疮涓鎴愬憳璁剧疆锅忕Щ閲忋
濡傛灉涓瀹氲侀拡瀵筶ocal variable鎴栬呮暟缁勭殑姣忎釜鎴愬憳杩涜屽亸绉婚噺璁剧疆锛屽彲浠ヨ冭槛瀹氢箟涓涓猽nion镄勭被鍨:union {short s;int i;}

② linux64位机器编译32位程序出现错误。

32 和 64 是完全两个不同的系统。Linux 他们的兼容,完全是基于内核的双模式切换功能,但是因为是基于内核的。所以 32 和 64 的系统函数库就还是没关系。
那么,你编译和运行 32 位程序,就需要 64 位的函数库接口支撑。同样 64 位程序,也需要 64 位的函数库提供支撑。

你这个问题,教程只让你装了最基本的编译器环境,但是函数支撑环境全都没有装,肯定是还会提示找不到需要的函数库的。
另外,就算你这个命令装了需要的函数库,也肯定只是装了 64 位的函数库,32 位库也没有装。那么编译 32 位程序也会出现找不到 32 位函数库的问题的。

你这个问题,我建议你学习两部分:
1、Linux 的依赖关系;
2、Linux 的 mutilib 相关实现。

我建议,编译 32 的程序请用纯 32 位系统。64 位系统只编译 64 位的程序。64 位系统只可以运行 32 位程序,不要用来编译。Linux 里面随便找个程序,就会依赖很多的函数库,这对于编译器调用来说,会很乱的。
如果真的没有空闲机器去单独跑 32 位系统了,我建议要么是 chroot 环境,要么是用交叉编译。不过注意这两种方式还是需要设置。

③ 我在linux环境下怎么就是编译不成功

编译什么?编译内核?编译软件?GNU GCC?具体是什么有具体的方法,但是一般下方法是三步走:
./configure
make
sudo make install clean
基本上就能够编译好了,但是有一些编译的时候有依赖性的软件包,所以我才说看你要编译什么软件~

阅读全文

与Linux编译程序出错相关的资料

热点内容
怎样将python代码保存 浏览:279
阿里云服务器如何续费优惠券 浏览:849
加密货币量化交易策略模型 浏览:212
51单片机驱动win7 浏览:811
有什么app可以看泰剧吗 浏览:92
ftp命令转换 浏览:155
解压文件为什么老是不动 浏览:454
手机电视直播网站源码 浏览:110
粉笔app在哪里看真题 浏览:601
php获取url中的参数值 浏览:79
dna服务器是什么 浏览:977
pdf图片旋转的 浏览:202
我的世界服务器总断开怎么回事 浏览:408
使用python编写员工信息管理系统 浏览:607
程序员接私活设计费用怎么评估 浏览:162
怎么查询服务器mac地址 浏览:89
什么app看nba直播 浏览:404
ic卡无加密和有加密的区别 浏览:669
51子系列单片机机型 浏览:184
java创建文件代码 浏览:675