lmbench3交叉编译未定义的pmap_set

时间:2016-07-09 04:57:29

标签: linux makefile cross-compiling rpc

我想在x86机器上为ARM64交叉编译lmbench。我根据这里的指南构建了自己的交叉编译器:http://preshing.com/20141119/how-to-build-a-gcc-cross-compiler/

当我尝试使用这种交叉编译器交叉编译lmbench3时,我首先要:

  1. 删除src / Makefile
  2. 中使用bk.ver的所有行
  3. 在Makefile的第200行将bk.ver替换为3,以便我拥有:
  4. sed -e "s/<version>/3/g" < ../scripts/lmbench > $O/lmbench
    
    1. 设置CC=aarch64-linux-gccOS=aarch64-linux-gnuCFLAGS="$CFLAGS -static"
    2. 将所有glibc-2.20/sunrpc/rpc标头文件放入/opt/cross/aarch64-linux/include/rpc文件夹
    3. 然后当我输入make命令时,我收到以下错误:
    4. gmake[1]: Entering directory `/home/florian/lmbench3/src'
      aarch64-linux-gcc -O -DRUSAGE -DHAVE_uint=1 -DHAVE_int64_t=1 -DHAVE_DRAND48 -DHAVE_SCHED_SETAFFINITY=1   -o ../bin/aarch64-linux-gnu/bw_tcp bw_tcp.c ../bin/aarch64-linux-gnu/lmbench.a -lm
      ../bin/aarch64-linux-gnu/lmbench.a(lib_tcp.o): In function `tcp_done':
      lib_tcp.c:(.text+0x18): undefined reference to `pmap_unset'
      ../bin/aarch64-linux-gnu/lmbench.a(lib_tcp.o): In function `tcp_connect':
      lib_tcp.c:(.text+0x338): undefined reference to `pmap_getport'
      ../bin/aarch64-linux-gnu/lmbench.a(lib_tcp.o): In function `tcp_server':
      lib_tcp.c:(.text+0x568): undefined reference to `pmap_unset'
      lib_tcp.c:(.text+0x584): undefined reference to `pmap_set'
      collect2: error: ld returned 1 exit status
      gmake[1]: *** [../bin/aarch64-linux-gnu/bw_tcp] Error 1
      gmake[1]: Leaving directory `/home/florian/lmbench3/src'
      make: *** [lmbench] Error 2
      

      我知道在pmap_set中调用pmap_unsetpmap_getportlib_tcp.c,但我找不到他们的定义。当我为x86编译lmbench3时,我没有收到此错误,我在主机上检查了这些函数的定义,但仍然没有在任何地方找到它们。

      有谁知道如何处理此错误?我想我仍然需要使用RPC,所以我不想评论任何一行。

1 个答案:

答案 0 :(得分:0)

从错误信息中,ld找不到lib,请尝试以下操作

make results LDFLAGS=-ltirpc