64位Ubuntu上编译32位程序操作步骤
生活随笔
收集整理的這篇文章主要介紹了
64位Ubuntu上编译32位程序操作步骤
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.??????確認主機為64位架構的內核,應該輸出為adm64,執行:
$ dpkg --print-architecture2.??????確認打開了多架構支持功能,應該輸出為i386,執行:
$ dpkg --print-foreign-architectures
如果沒有,則需要手動打開,依次執行:
$ sudo dpkg --add-architecture i386
$ sudo apt-get update
$ sudo apt-get dist-upgrade3.??????安裝gcc multilab,執行:
$ sudo apt-get install gcc-multilab g++-multilib4.??????注意:用GCC編譯時需要加上 -m32 選項
5.??????以下是簡單的測試代碼:
add.hpp:
int add(int a, int b);add.cpp:
#include "add.hpp"int add(int a, int b)
{return (a+b);
}main.cpp:
#include <iostream>
#include "add.hpp"int main()
{int a = 2, b = 3;int ret = 0;ret = add(a, b);std::cout<<a<<" + "<<b<<" = "<<ret<<std::endl;return 0;
}
run_x86.sh:
#! /bin/bashg++ -m32 -c -Os -fPIC add.cpp
ar -r libadd_x86.a *.o
objdump -a libadd_x86.a
g++ -m32 -o test_x86_add main.cpp -L ./ -ladd_x86
./test_x86_add
run_x64.sh:
#! /bin/bashg++ -c -Os -fPIC add.cpp
ar -r libadd_x64.a *.o
objdump -a libadd_x64.a
g++ -o test_x64_add main.cpp -L ./ -ladd_x64
./test_x64_add
執行run_x64.sh結果如下圖:
如果執行文件與庫不一致,則會出錯,如下圖:
shell腳本中的objdump命令用來查看指定的靜態庫是32位還是64位的,如果是動態庫,則可以用file命令。
總結
以上是生活随笔為你收集整理的64位Ubuntu上编译32位程序操作步骤的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 卷积神经网络(CNN)的简单实现(MNI
- 下一篇: Windows7 64bit VS201