ShanQincheng / jmuSupplicant

适用于集美大学的第三方锐捷认证客户端
Apache License 2.0
41 stars 21 forks source link

使用openwrt交叉编译出现以下错误,请问怎么解决? #6

Closed nature2608 closed 5 years ago

nature2608 commented 5 years ago

CMakeFiles/jmusupplicant.dir/eap_frames_operations.c.o: in function determine_eap_frame_type_then_response_eap_frame': eap_frames_operations.c:(.text+0x600): unsupported jump between ISA modes; consider recompiling with interlinking enabled CMakeFiles/jmusupplicant.dir/functions.c.o: in functionHandleSigalrm': functions.c:(.text+0x784): unsupported jump between ISA modes; consider recompiling with interlinking enabled collect2: error: ld returned 1 exit status src/CMakeFiles/jmusupplicant.dir/build.make:200: recipe for target 'bin/jmusupplicant' failed make[2]: [bin/jmusupplicant] Error 1 CMakeFiles/Makefile2:87: recipe for target 'src/CMakeFiles/jmusupplicant.dir/all' failed make[1]: [src/CMakeFiles/jmusupplicant.dir/all] Error 2 Makefile:83: recipe for target 'all' failed make: *** [all] Error 2

LGiki commented 5 years ago

请给出当前编译环境的信息以及具体是要交叉编译到哪个平台,没有这些信息只有这些报错文本不容易确定问题到底是什么原因造成的。 不过从这段报错信息中可以看到consider recompiling with interlinking enabled这个提示,说明当前编译环境下可能需要开启interlinking这个选项才能继续进行编译。 可以参考一下下方链接中提供的信息,试试能否成功编译: https://groups.google.com/forum/#!topic/libtins/rPaKxAnjSgE

nature2608 commented 5 years ago

@LGiki 问题依旧,系统为ubuntu 18.04,操作完全按照readme执行,在没有交叉编译环境时可以顺利编译。sdk使用的是openwrt 18.06.02 ar71xx。

LGiki commented 5 years ago

你有尝试那个链接里面提到的一些编译参数吗? 我这边在 ArchLinux 下按照 README 中的方法交叉编译到 ar71xx 是能正常编译的。 我明天试试在 Ubuntu 18.04 下进行交叉编译吧。 或者我可以把我编译好的文件发给你。

nature2608 commented 5 years ago

@LGiki 我尝试了加上-DCMAKE_CXX_FLAGS="-minterlink-mips16" 但是并不奏效, 我换成ArchLinux试试。方便的话可以先发给我二进制吗?邮箱260821425@qq.com,谢谢你。

LGiki commented 5 years ago

已发送。 因为明天还得早起,已经躺床上准备睡了,所以就先用手机从我路由器上把我之前编译好的下载下来发给你了。

nature2608 commented 5 years ago

@LGiki 我同样在ubuntu 18.04下用潘多拉https://downloads.pangubox.com/pandorabox/19.01/targets/ralink/mt7620/PandoraBox-SDK-ralink-mt7620_gcc-5.5.0_uClibc-1.0.x.Linux-x86_64-2018-12-31-git-4b6a3d5ca.tar.xz 编译,但提示是iconv的问题:

[ 73%] Linking C executable ../bin/jmusupplicant CMakeFiles/jmusupplicant.dir/functions.c.o: In function code_convert': functions.c:(.text+0x1c0): undefined reference tolibiconv_open' functions.c:(.text+0x204): undefined reference to libiconv' functions.c:(.text+0x214): undefined reference tolibiconv_close' collect2: error: ld returned 1 exit status src/CMakeFiles/jmusupplicant.dir/build.make:200: recipe for target 'bin/jmusupplicant' failed make[2]: [bin/jmusupplicant] Error 1 CMakeFiles/Makefile2:87: recipe for target 'src/CMakeFiles/jmusupplicant.dir/all' failed make[1]: [src/CMakeFiles/jmusupplicant.dir/all] Error 2 Makefile:83: recipe for target 'all' failed make: *** [all] Error 2

nature2608 commented 5 years ago

@AmadeusGhost 请问你是交叉编译的吗?要是在系统下直接编译是没问题的。

LGiki commented 5 years ago

我刚刚使用 https://downloads.openwrt.org/releases/18.06.2/targets/ar71xx/generic/openwrt-sdk-18.06.2-ar71xx-generic_gcc-7.3.0_musl.Linux-x86_64.tar.xz 这个工具链在 ArchLinux 上交叉编译到 AR71XX 是没有问题的,如下图: Screenshot from 2019-05-13 22-49-45.png 至于你后面说的 iconv 的问题,这个你可以选择:

  1. 交叉编译 libiconv ,然后重新编译 jmuSupplicant 并进行链接
  2. 使用最新的 MT7620 编译工具链:https://downloads.openwrt.org/releases/18.06.2/targets/ramips/mt7620/openwrt-sdk-18.06.2-ramips-mt7620_gcc-7.3.0_musl.Linux-x86_64.tar.xz 你所使用的 MT7620 交叉编译工具链似乎比较老了,里面不带 iconv,Openwrt 上提供的交叉编译工具链中是带 iconv 的。
nature2608 commented 5 years ago

@LGiki 在官网出现下了18.06的sdk重新试了下果然可以了,看来iconv的问题是潘多拉的编译链太老了。不是很懂的cmake怎么写规则,要怎么链接libiconv。

LGiki commented 5 years ago

:beers: 可以了就好。如果没有其它问题的话,到时候麻烦 Repo 主关闭一下这个 issue。

nature2608 commented 5 years ago

@AmadeusGhost 我本来就是想在潘多拉使用的,但是潘多拉sdk没有iconv,所以编译不了,我也不知怎么链接iconv,所以改用了较新的musl编译器的sdk