updateing / minieap

可扩展的 802.1x 客户端,带有锐捷 v3 (v4) 算法插件支持
GNU General Public License v3.0
514 stars 93 forks source link

交叉编译失败怎么办, 求教程 #82

Open huhu415 opened 10 months ago

huhu415 commented 10 months ago

config.mk是这样的

#### Choose/Add your modules here ####
PLUGIN_MODULES := \
    packet_plugin_printer \
    packet_plugin_rjv3

# Linux
#PLUGIN_MODULES += if_impl_sockraw

# macOS / BSD
# PLUGIN_MODULES += if_impl_bpf

# Other OS
 PLUGIN_MODULES += if_impl_libpcap

# This implementation is not included in the code.
# If you need it, add it yourselves.
# PLUGIN_MODULES += ifaddrs

ENABLE_DEBUG  := false
ENABLE_ICONV  := true
ENABLE_GBCONV := false
STATIC_BUILD  := false

# If your platform has iconv_* integrated into libc, change to false
# Affects dynamic linking
LIBICONV_STANDALONE := false

CUSTOM_CFLAGS :=
CUSTOM_LDFLAGS := -I/home/arthur/libpcap-1.10.4
CUSTOM_LIBS := /home/arthur/libpcap-1.10.4/libpcap.a
CC := mipsel-openwrt-linux-gcc

我make 命令后是这样的.

root@zzyanCentos2222:/home/arthur/minieap# make
mipsel-openwrt-linux-gcc  -Ipacket_plugin/printer/ -Iinclude   -Wall -Wpedantic -D_GNU_SOURCE -DENABLE_ICONV  packet_plugin/printer/packet_plugin_printer.c -c -o packet_plugin/printer/packet_plugin_printer.o
mipsel-openwrt-linux-gcc -Ipacket_plugin/rjv3/rjv3_hashes -Ipacket_plugin/rjv3/ -Iinclude   -Wall -Wpedantic -D_GNU_SOURCE -DENABLE_ICONV  packet_plugin/rjv3/packet_plugin_rjv3.c -c -o packet_plugin/rjv3/packet_plugin_rjv3.o
mipsel-openwrt-linux-gcc -Ipacket_plugin/rjv3/rjv3_hashes -Ipacket_plugin/rjv3/ -Iinclude   -Wall -Wpedantic -D_GNU_SOURCE -DENABLE_ICONV  packet_plugin/rjv3/packet_plugin_rjv3_priv.c -c -o packet_plugin/rjv3/packet_plugin_rjv3_priv.o
mipsel-openwrt-linux-gcc -Ipacket_plugin/rjv3/rjv3_hashes -Ipacket_plugin/rjv3/ -Iinclude   -Wall -Wpedantic -D_GNU_SOURCE -DENABLE_ICONV  packet_plugin/rjv3/packet_plugin_rjv3_keepalive.c -c -o packet_plugin/rjv3/packet_plugin_rjv3_keepalive.o
mipsel-openwrt-linux-gcc -Ipacket_plugin/rjv3/rjv3_hashes -Ipacket_plugin/rjv3/ -Iinclude   -Wall -Wpedantic -D_GNU_SOURCE -DENABLE_ICONV  packet_plugin/rjv3/packet_plugin_rjv3_prop.c -c -o packet_plugin/rjv3/packet_plugin_rjv3_prop.o
mipsel-openwrt-linux-gcc -Ipacket_plugin/rjv3/rjv3_hashes -Ipacket_plugin/rjv3/ -Iinclude   -Wall -Wpedantic -D_GNU_SOURCE -DENABLE_ICONV  packet_plugin/rjv3/rjv3_hashes/rjencode.c -c -o packet_plugin/rjv3/rjv3_hashes/rjencode.o
mipsel-openwrt-linux-gcc -Ipacket_plugin/rjv3/rjv3_hashes -Ipacket_plugin/rjv3/ -Iinclude   -Wall -Wpedantic -D_GNU_SOURCE -DENABLE_ICONV  packet_plugin/rjv3/rjv3_hashes/rjtiger.c -c -o packet_plugin/rjv3/rjv3_hashes/rjtiger.o
mipsel-openwrt-linux-gcc -Ipacket_plugin/rjv3/rjv3_hashes -Ipacket_plugin/rjv3/ -Iinclude   -Wall -Wpedantic -D_GNU_SOURCE -DENABLE_ICONV  packet_plugin/rjv3/rjv3_hashes/rjwhirlpool.c -c -o packet_plugin/rjv3/rjv3_hashes/rjwhirlpool.o
mipsel-openwrt-linux-gcc -Ipacket_plugin/rjv3/rjv3_hashes -Ipacket_plugin/rjv3/ -Iinclude   -Wall -Wpedantic -D_GNU_SOURCE -DENABLE_ICONV  packet_plugin/rjv3/rjv3_hashes/byte_order.c -c -o packet_plugin/rjv3/rjv3_hashes/byte_order.o
mipsel-openwrt-linux-gcc -Ipacket_plugin/rjv3/rjv3_hashes -Ipacket_plugin/rjv3/ -Iinclude   -Wall -Wpedantic -D_GNU_SOURCE -DENABLE_ICONV  packet_plugin/rjv3/rjv3_hashes/rjcrc16.c -c -o packet_plugin/rjv3/rjv3_hashes/rjcrc16.o
mipsel-openwrt-linux-gcc -Ipacket_plugin/rjv3/rjv3_hashes -Ipacket_plugin/rjv3/ -Iinclude   -Wall -Wpedantic -D_GNU_SOURCE -DENABLE_ICONV  packet_plugin/rjv3/rjv3_hashes/rjripemd128.c -c -o packet_plugin/rjv3/rjv3_hashes/rjripemd128.o
mipsel-openwrt-linux-gcc -Ipacket_plugin/rjv3/rjv3_hashes -Ipacket_plugin/rjv3/ -Iinclude   -Wall -Wpedantic -D_GNU_SOURCE -DENABLE_ICONV  packet_plugin/rjv3/rjv3_hashes/rjsha1.c -c -o packet_plugin/rjv3/rjv3_hashes/rjsha1.o
mipsel-openwrt-linux-gcc -Ipacket_plugin/rjv3/rjv3_hashes -Ipacket_plugin/rjv3/ -Iinclude   -Wall -Wpedantic -D_GNU_SOURCE -DENABLE_ICONV  packet_plugin/rjv3/rjv3_hashes/rjtiger_sbox.c -c -o packet_plugin/rjv3/rjv3_hashes/rjtiger_sbox.o
mipsel-openwrt-linux-gcc -Ipacket_plugin/rjv3/rjv3_hashes -Ipacket_plugin/rjv3/ -Iinclude   -Wall -Wpedantic -D_GNU_SOURCE -DENABLE_ICONV  packet_plugin/rjv3/rjv3_hashes/rjwhirlpool_sbox.c -c -o packet_plugin/rjv3/rjv3_hashes/rjwhirlpool_sbox.o
mipsel-openwrt-linux-gcc -Ipacket_plugin/rjv3/rjv3_hashes -Ipacket_plugin/rjv3/ -Iinclude   -Wall -Wpedantic -D_GNU_SOURCE -DENABLE_ICONV  packet_plugin/rjv3/rjv3_hashes/rjmd5.c -c -o packet_plugin/rjv3/rjv3_hashes/rjmd5.o
mipsel-openwrt-linux-gcc -Ipacket_plugin/rjv3/rjv3_hashes -Ipacket_plugin/rjv3/ -Iinclude   -Wall -Wpedantic -D_GNU_SOURCE -DENABLE_ICONV  packet_plugin/rjv3/rjv3_hashes/checkV4.c -c -o packet_plugin/rjv3/rjv3_hashes/checkV4.o
mipsel-openwrt-linux-gcc  -Iif_impl/libpcap/ -Iinclude   -Wall -Wpedantic -D_GNU_SOURCE -DENABLE_ICONV  if_impl/libpcap/if_impl_libpcap.c -c -o if_impl/libpcap/if_impl_libpcap.o
if_impl/libpcap/if_impl_libpcap.c:10:18: fatal error: pcap.h: No such file or directory
compilation terminated.
/home/arthur/minieap/append.mk:22: recipe for target 'if_impl/libpcap/if_impl_libpcap.o' failed
make: *** [if_impl/libpcap/if_impl_libpcap.o] Error 1

我知道的是交叉编译要用openwrt的gcc编译器编译libpcap, 用./configure --host=mipsel-openwrt-linux --with-pcap=linux, 然后make,这样libpcap.a就编译好了, 然后就是minieap的可执行文件, 这个是怎么链接的啊, 什么静态链接,动态链接, 然后各种我就不懂, 我应该看什么书去了解啊, 还有我想要学习这个代码应该从哪里开始学啊.

updateing commented 10 months ago

仅针对这个问题来说,可以直接把 if_impl_libpcap 换回 if_impl_sockraw,就无需 libpcap 这个外部依赖了。如果一定要带上 libpcap,要么把 libpcap 的头文件和库都装进 sysroot,要么手动指定 CFLAGS -I 和 LDFLAGS -L 指向它的相应路径。

关于学习的方法,我自己基本是遇到什么问题查什么问题,系统性的资料就是看各类软件自带的文档,并没有看过专门的书。

huhu415 commented 10 months ago

好的, 谢谢你, 那我想要看懂这个代码, 应该看什么书啊, 看网络通讯加密协议的书? 还是说先练习抓包啊, 看看包里是什么

updateing commented 10 months ago

我只是代码维护者,并不懂教学。不过,至少想到什么就去尝试,总能遇到正确的方向。