使用交叉编译器编译代码

详细步骤可以参考https://www.crifan.com/summary_cross_compile_library_note/
关键点:编译过程最重要的一步是,在执行

./configure ... 

命令去配置程序时,将以下参数设置好:

  1. prefix:指的是,将编译好的库,安装到哪里
  2. build=i686-pc-cygwin:指的是,我当前的pc编译环境是cygwin
  3. target=arm-xscale-linux和–host=arm-xscale-linux:表示我的编译是交叉编译,即编译出来的代码,是运行在xscale上的。
  4. disable-cplusplus:表示是去禁止cpp的编译->不会去编译src/cpp下面的东西->不会出现上面的"XmlRpcCpp.cpp:39: undefined reference to `_xmlrpc_env_init’"错误
  5. CC=arm-xscale-linux-gnueabi-gcc:指定所用的交叉编译器gcc

参数的值根据你的具体情况去填,配置完成后,调用最后的make命令,会调用你的交叉编译器,来编译生成对应平台的可执行文件,然后把该文件拷贝过去试一试吧

 小技巧:

在写脚本时,对于一些随程序不同而不同的内容建议使用宏或者说变量来代替,

用法很简单,举例说明:

filename=test
AM_INIT_AUTOMAKE(${filename}, 1.0)

这里我定义了一个变量叫filename,给他赋值为test,这个值是可以改变的,而使用这个变量通过$(变量名)的方式来使用,这个符号会把它所在的地方直接用变量名的值来替换

这么做的好处就是,你的脚本文件可以做成一个通用的模板,在一些关键位置,赋值使用你的宏定义的变量,实际使用时,只需要改变这个变量的值,就可以了

一开始只有.c或.cpp的源码,怎么从无到有生成configure和makefile文件

  1. 使用autoscan命令,生成configure.scan
  2. 将configure.scan该名为configure.ac并修改其内容,可参考https://www.cnblogs.com/fallenmoon/p/7506035.html,我只说一下几个关键的:
    AC_INIT() #括号中内容填写你的主函数所在的文件名
    AM_INIT_AUTOMAKE(name,1.0) #name表示你生成的程序的名字,1.0是版本号
  3. 执行aclocalautoconf命令,生成aclocal.m4和configure文件
  4. 新建Makefile.am文件,填入以下内容:
    AUTOMAKE_OPTIONS=foreign
    bin_PROGRAMS=${filename}    #${filename}是程序的名字
    helloworld_SOURCES=main.c #main.c表示主函数所在文件
    ${filename}_SOURCES=...   #填写你所有需要编译的文件,以空格分隔
    CFLAGS += -D<name=value>  #使用-D 来添加加预处理器定义
    CFLAGS += -lm #大概的意思是使编译器自动去找文件引用的头文件
    
  5. 执行 automake --add-missing 生成makefile.in文件
  6. 执行 configure ...  配置并生成makefile文件,参数填写见上文
  7. 执行make

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值