文章目录
1 出现的问题
在学习正点原子的嵌入式Linux驱动教程,执行 make
时,出现如按下的错误:
/usr/bin/ld: unknown architecture of input file `control/.libs/libcontrol.a(control_symbols.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: unknown architecture of input file `pcm/.libs/libpcm.a(pcm_symbols.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: unknown architecture of input file `timer/.libs/libtimer.a(timer_symbols.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: unknown architecture of input file `rawmidi/.libs/librawmidi.a(rawmidi_symbols.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: unknown architecture of input file `hwdep/.libs/libhwdep.a(hwdep_symbols.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: unknown architecture of input file `seq/.libs/libseq.a(seq_symbols.o)' is incompatible with i386:x86-64 output
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:493:libasound.la] 错误 1
make[2]: 离开目录“/home/witheart/linux/tool/alsa-lib-1.2.2/src”
make[1]: *** [Makefile:553:all-recursive] 错误 1
make[1]: 离开目录“/home/witheart/linux/tool/alsa-lib-1.2.2/src”
make: *** [Makefile:404:all-recursive] 错误 1
2 错误原因
笔者遇到这个错误是因为前面安装过一次 alsa-lib 了,但是没有清理干净。
3 解决方式
先进入源码文件夹
3.1 清理编译过程中生成的临时文件和目标文件
执行
sudo make clean
3.2 重新配置编译环境
执行
./configure --host=[target-platform] --prefix=[install-path] --with-configdir=[config-dir]
命令选项解释:
--host=[target-platform]
:指定编译目标平台的类型。--prefix=[install-path]
:指定安装文件的根目录。--with-configdir=[config-dir]
:指定程序运行时配置文件的目录。
请按照自己的需要进行修改。
3.3 重新编译
执行
sudo make
3.4 切换为 root 用户
执行
sudo -s
3.5 重新加载环境变量
执行
source /etc/profile
3.6 安装编译后的程序
执行
make install
3.7 切换回普通用户
执行
su [username]