Ubuntu 14.04中编译Kermit

来源:互联网 发布:ni软件什么用 编辑:程序博客网 时间:2024/06/07 02:42

1 x86编译

    解压kermit源码压缩包,然后进入源码目录,执行下面命令执行编译:

make linux

1.1 错误1

ckufio.c:(.text+0xda8a): undefined reference to `crypt'
解决方法:

    在makefile中找到"linuxa"目标,然后在下面的"-lm"右边空格,然后添加“-lcrypt”,如下图所示:


                                                                图1 添加-lcrypt

1.2 错误2

    在64位的Ubuntu 14.04中,还可能出现一下错误:

ckuusx.o: In function `shocps':ckuusx.c:(.text+0xe9): undefined reference to `stdscr'ckuusx.c:(.text+0xee): undefined reference to `wmove'ckuusx.c:(.text+0x104): undefined reference to `printw'ckuusx.c:(.text+0x10b): undefined reference to `stdscr'ckuusx.c:(.text+0x110): undefined reference to `wclrtoeol'ckuusx.c:(.text+0x18c): undefined reference to `stdscr'ckuusx.c:(.text+0x191): undefined reference to `wmove'ckuusx.c:(.text+0x1b5): undefined reference to `printw'ckuusx.c:(.text+0x1bc): undefined reference to `stdscr'
解决方法:

    根据参考资料[3]的提示,在1.1小节图中“-lcrypt”后面添加“-lncurses”即可。

1.2 编译结果

    编译kermit源码后,产生2个可执行文件:wartwermit。其中wart只是一个辅助编译的工具,wermit才是我们真正需要的kermit工具。

2 交叉编译

    在嵌入式开发过程中,可以使用kermit工具来实现PC与开发板直接的文件传输。这时候需要将kermit交叉编译。下面的操作默认读者已经配置好了交叉编译环境(例如arm-linux-gcc)。

2.1  修改编译器

    在图1中仔细观察发现“CC = gcc,CC3 = gcc”。为了交叉编译,我们需要修改所使用的编译器。将它们改为交叉编译器,如下图所示:


                                                                图 2.1 修改编译器

    修改编译器后,执行下面命令:

make linux

2.2 错误

                                                               图 2.2 试图执行./wart

    在上图中可见,编译kermit过程中试图执行所生成的wart,但是由于它是使用交叉编译器编译生成的,故在x86 PC中执行发生错误。解决方法自然就是将1.1小节中适合x86运行的wart复制到本目录中替换由交叉编译器编译生成的wart,然后再执行make linux即可。

参考资料

[1]undefined reference to `crypt'怎么解决?

[2]Ubuntu 12.04下编译C-Kermit 9.0.302

[3]undefined reference to `stdscr'

0 0
原创粉丝点击