标签:ati 导致 交叉编译 ima 生成 线程 软件包 -fpic info
Ubuntu系统安装完成后,还需要进行一些设置,使得Ubuntu变得更好用。
第1步:vim编辑器的设置
vim编辑器设置见:https://www.cnblogs.com/wybliw/p/10237197.html
这里面介绍了如何将vim搭建成一个好用的IDE,效果图如下。
目录树,函数预览,智能补全,语法错误提示,自动添加函数注释 等各种强大的功能,等着你去探索。
第2步:搭建交叉编译环境。
根据自己的需要,下载相关的交叉编译器,
我将交叉编译器放在MyTools目录下,然后在该目录下,我创建了bash.bashrc的软连接文件,方便管理交叉编译器。
软连接的创建方法可自行网上搜索,或者等后期我会出一篇《linux基本命令的使用》的文章。
然后用vim编辑器编辑MyTools目录下的bash.bashrc软连接文件,
执行命令:
sudo vim bahs.bashr
在最后添加如下内容:
# ARM 交叉编辑环境配置 arm_target=AA # AA 交叉编译器 # arm_target=BB # BB 交叉编译器 if [ "$arm_target" = AA ]; then export PATH=$PATH:/home/bob/MyTools/AA/4.5.1/bin elif [ "$arm_target" = BB ]; then export PATH=$PATH:/home/bob/MyTools/BB/4.9.3/bin fi export GCC_COLORS=auto
该配置方法,能很方便的切换不同的交叉编译器环境。
当想要启用AA交叉编译环境时,就取消AA的注释,
当想要启用BB交叉编译环境时,就取消BB的注释。
环境配置好后,输入命令:
arm-none-linux-gnueabihf-gcc -v
查看当前交叉编译器的版本。
第3步:安装 pthread 线程 man手册文档
pthread函数库的man手册,安装
sudo apt-get install glibc-doc
只有一小部分pthread的函数,再安装manpages-posix-dev就ok.
sudo apt-get install manpages-posix manpages-posix-dev
第4步: Linux 64位系统编译32位链接库
由于在编译生成 libtest.so 时增加了 -m32 这个参数,导致 libtest.so 是一个 32 位的动态库,而链拉步骤没有改
gcc -m32 main.c -L./ -o main -ltest gcc -m32 -shared -fPIC test.c -o libtest.so
在64位机上编译32位的程序首先需要 ia32-libs 这个动态的支持,看一下 /usr/lib32 这个目录下有没有东西,如果没有, Ubuntu上安装这个包:
sudo apt-get install ia32-libs ia32-libs-multiarch
如果在加入 -m32 这个参数时编译仍然有问题,比如
In file included from /usr/include/stdio.h:28:0, from AVAPIs_Client.c:1: /usr/include/features.h:324:26: fatal error:bits/predefs.h: No such file or directory compilation terminated. make: *** [all] Error 1
这通常是由于没有32位的编译工具引起, 需要安装 gcc-multilib 这个软件包.
在Ubuntu 上安装这个软件包:
sudo apt-get install gcc-multilib
g++ 也同样如此:
sudo apt-get install g++-multilib
到这里,编译32位程序应该没有问题了,运行程序的时候记得修改 LD_LIBRARY_PATH 这个变量,否则程序会找不到指定的动态库.
export LD_LIBRARY_PATH=/home/user/lib/****:$****LD_LIBRARY_PATH
linux终端按ctrl+s后界面卡住的解决
ctrl+s 在linux下是暂停终端的作用,停止向终端输入
解决方案:
按下 ctrl+q ,恢复向终端输入
原创,转载请注明出处。
标签:ati 导致 交叉编译 ima 生成 线程 软件包 -fpic info
原文地址:https://www.cnblogs.com/wybliw/p/11219558.html