Wireshark-dev: Re: [Wireshark-dev] Issues with cross-compiling

From: Glen Huang <heyhgl@xxxxxxxxx>
Date: Tue, 18 Jan 2022 00:14:11 +0800
Sure,

This is the compilation error I got

gcc -DNDEBUG -L/sdk/staging_dir/toolchain-x86_64_gcc-8.4.0_musl/usr/lib -L/sdk/staging_dir/toolchain-x86_64_gcc-8.4.0_musl/lib -znow -zrelro -fPIE -pie CMakeFiles/lemon.dir/lemon.c.o -o ../../run/lemon 
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/10/../../../x86_64-linux-gnu/Scrt1.o: in function `_start':
(.text+0x12): undefined reference to `__libc_csu_fini'
/usr/bin/ld: (.text+0x19): undefined reference to `__libc_csu_init'
collect2: error: ld returned 1 exit status

I don’t think musl should show up here, since my build machine is Debian.

> On Jan 17, 2022, at 10:09 PM, João Valverde <j@xxxxxx> wrote:
> 
> Hi,
> 
> You would have a better chance of receiving helpful feedback on the CMake side of things if you also described the actual error in detail.
> 
> On 17/01/22 02:01, Glen Huang wrote:
>> Hi,
>> 
>> I’m trying to create an OpenWrt package for Wireshark.
>> 
>> I think I’m pretty close. However, I got stuck at lemon, which if I’m not wrong, should be compiled by my build machine’s compiler. From the source code, I found out it supports the LEMON_C_COMPILER variable, which I assigned with the build machine’s compiler, but after compiling, CMAKE used the target platform’s linking flags for linking, which apparently failed. I’m not very familiar with CMAKE, so would appreciate some help.
>> 
>> Cross-compiling has cropped up here a few times in the past decades, but the ones I managed to find are all pertaining to Wireshark’s autotools era, so they’re not particularly helpful, at least for my limited knowledge in this area.
>> 
>> Here is the OpenWrt package’s Makefile I have come up with so far:
>> 
>> include $(TOPDIR)/rules.mk
>> 
>> PKG_NAME:=wireshark
>> PKG_VERSION:=3.6.1
>> PKG_RELEASE:=1
>> 
>> PKG_SOURCE_URL:=https://www.wireshark.org/download/src/
>> PKG_SOURCE:=wireshark-$(PKG_VERSION).tar.xz
>> PKG_HASH:=0434eda8fb6bf88e2b42a67eb5d1de254a67d505bec3bb51fee9d7cad7925a38
>> 
>> PKG_BUILD_PARALLEL:=1
>> CMAKE_INSTALL:=1
>> 
>> include $(INCLUDE_DIR)/package.mk
>> include $(INCLUDE_DIR)/cmake.mk
>> 
>> define Package/wireshark
>>   SECTION:=net
>>   CATEGORY:=Network
>>   TITLE:=Network protocol analyzer
>>   URL:=https://www.wireshark.org/
>>   DEPENDS:=+libpcap +glib2 +libgcrypt +libcares
>> endef
>> 
>> define Package/wireshark/description
>>         Network protocol analyzer
>> endef
>> 
>> CMAKE_OPTIONS += \
>>         -DCMAKE_CROSSCOMPILING=1 \
>>         -DHAVE_C99_VSNPRINTF=TRUE \
>>         -DLEMON_C_COMPILER=$(CMAKE_HOST_C_COMPILER) \
>>         -DBUILD_wireshark=OFF \
>>         -DBUILD_androiddump=OFF \
>>         -DBUILD_ciscodump=OFF \
>>         -DBUILD_idl2wrs=OFF
>> 
>> define Package/wireshark/install
>>         # figure out later
>> endef
>> 
>> $(eval $(call BuildPackage,wireshark))
>> ___________________________________________________________________________
>> Sent via:    Wireshark-dev mailing list <wireshark-dev@xxxxxxxxxxxxx>
>> Archives:    https://www.wireshark.org/lists/wireshark-dev
>> Unsubscribe: https://www.wireshark.org/mailman/options/wireshark-dev
>>              mailto:wireshark-dev-request@xxxxxxxxxxxxx?subject=unsubscribe
> 
> ___________________________________________________________________________
> Sent via:    Wireshark-dev mailing list <wireshark-dev@xxxxxxxxxxxxx>
> Archives:    https://www.wireshark.org/lists/wireshark-dev
> Unsubscribe: https://www.wireshark.org/mailman/options/wireshark-dev
>            mailto:wireshark-dev-request@xxxxxxxxxxxxx?subject=unsubscribe