cannot check setpgrp when cross compiling


1、下载netperf2.5.0.tar.gz,解压缩到/opt/netperf2.5.0

2、cd /opt/netperf2.5.0 

   ./configure CC=arm-linux-gcc --host=arm-linux --prefix=/usr/local/netperf2

   出现如下错误:

   checking types of arguments for select... int,fd_set *,struct timeval *
   checking whether setpgrp takes no argument... configure: error: cannot check setpgrp when cross compiling
3、在网上搜索,说这个问题是由于在语句中判断是否ac_cv_func_setpgrp_void 设置, 如果没有设置,交叉编译必然会出错。网上一般会出现两种解决方法:

  • 注释掉configure文件中相应代码,即注释掉cannot check setpgrp when cross compiling的下一行  { (exit 1); exit 1; };  但在netperf2.5.0的configure文件中并不存在这一行,所以采用另外一种方法。
  • 既然是检测ac_cv_func_setpgrp_void是否设置,那就再./configure之前先进行设定,即运行如下命令:

     echo "ac_cv_func_setpgrp_void=yes" > config.cache
      再运行:

    ./configure CC=arm-linux-gcc --host=arm-linux --prefix=/usr/local/netperf2 --config-cache

      交叉编译通过。

4、make make install

5、移植

   将bin目录下netserver/netperf拷贝到arm板的home目录下

6、测试

   先运行./netserver

   再运行./netperf -H 10.0.1.101测试本机

        ./netperf -H 10.0.1.10测试远程。

   在测试的过程中,出现过这样一个错误:netperf: remote error 998,网上查找说是,远端的netserver版本太老,不能提供对应的测试功能,将远端netperf改成netperf2.5.0版本后,问题解决。

7、问题

   在运行./netperf -t UDP_STEAM -H 10.0.1.10 -- -m 1024 时,出现如下错误:

   netperf: receive_response: no response received. errno 22 counter 0

   网上搜到的解决方法是说:

   may be that you have a firewall running interfering with the connection.
   linux errno 22 means: "Invalid argument". 
   将防火墙关掉后,问题不再出现。

 


 在linux的嵌入开发当中,要经常进行cross compiling的操作,也会经常出现一些错误,现总结如下:
 1. 在configure中经常会出现类似下面的错误:
configure: error: cannot check setpgrp when cross compiling
   一般解决方法是将相应configure文件中相应test的ac_cv**变量置到cache中,例如:
   eval ac_cv_file__usr_X_include_X11_X_h=no \
eval ac_cv_file__usr_X11R6_include_X11_X_h=no \
eval ac_cv_func_setpgrp_void=no \
./configure --prefix=%{_prefix} --host=$CFGHOST --build=%{_build} \
--cache-file=config.cache

2. 另外一个常见的问题时,在编译target 程序时,用的是cross compiler,理所当然build出来的程序不能直接在host端运行。如果在build target时,中间调用了一些自编译生成的程序,就会出错。
   解决方法:在host 平台上build出相应的工具, copy到target build中,覆盖不能运行的程序。

3. 
In function `_start':
: undefined reference to `main'

这个网上查到是编译器版本的问题,目前还没有确认!!


http://blog.sina.com.cn/s/blog_81fe9f940101136b.html

http://blog.chinaunix.net/uid-20754930-id-1877645.html

你可能感兴趣的:(linux,编译错误)