← Back to team overview

maria-discuss team mailing list archive

Re: Issues cross-compiling MariaDB for ARM

 

So, it seems the failing command:

cd /home/wmt/Downloads/build-mariadb/storage/connect && /usr/bin/cmake
-E cmake_link_script CMakeFiles/connect.dir/link.txt --verbose=1
/home/wmt/x-tools/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi-g++ 
-fPIC  -pie -fPIC -Wl,-z,relro,-z,now -fstack-protector
--param=ssp-buffer-size=4 -fno-rtti -Wall -Wmissing-declarations
-Wno-error=unused-function -Wno-error=unused-variable
-Wno-error=unused-value -Wno-error=parentheses
-Wno-error=strict-aliasing -Wno-error=type-limits -fpermissive
-fexceptions -fPIC  -O2 -g -DNDEBUG -D_FORTIFY_SOURCE=2 -DDBUG_OFF  
-shared -Wl,-soname,ha_connect.so -o ha_connect.so
CMakeFiles/connect.dir/ha_connect.cc.o
CMakeFiles/connect.dir/connect.cc.o
CMakeFiles/connect.dir/user_connect.cc.o
CMakeFiles/connect.dir/mycat.cc.o CMakeFiles/connect.dir/fmdlex.c.o
CMakeFiles/connect.dir/osutil.c.o CMakeFiles/connect.dir/rcmsg.c.o
CMakeFiles/connect.dir/array.cpp.o CMakeFiles/connect.dir/blkfil.cpp.o
CMakeFiles/connect.dir/colblk.cpp.o CMakeFiles/connect.dir/csort.cpp.o
CMakeFiles/connect.dir/filamap.cpp.o
CMakeFiles/connect.dir/filamdbf.cpp.o
CMakeFiles/connect.dir/filamfix.cpp.o
CMakeFiles/connect.dir/filamgz.cpp.o
CMakeFiles/connect.dir/filamtxt.cpp.o
CMakeFiles/connect.dir/filter.cpp.o CMakeFiles/connect.dir/json.cpp.o
CMakeFiles/connect.dir/jsonudf.cpp.o
CMakeFiles/connect.dir/maputil.cpp.o CMakeFiles/connect.dir/myconn.cpp.o
CMakeFiles/connect.dir/myutil.cpp.o
CMakeFiles/connect.dir/plgdbutl.cpp.o
CMakeFiles/connect.dir/plugutil.cpp.o
CMakeFiles/connect.dir/reldef.cpp.o CMakeFiles/connect.dir/tabcol.cpp.o
CMakeFiles/connect.dir/tabdos.cpp.o CMakeFiles/connect.dir/tabext.cpp.o
CMakeFiles/connect.dir/tabfix.cpp.o CMakeFiles/connect.dir/tabfmt.cpp.o
CMakeFiles/connect.dir/tabjson.cpp.o CMakeFiles/connect.dir/table.cpp.o
CMakeFiles/connect.dir/tabmul.cpp.o
CMakeFiles/connect.dir/tabmysql.cpp.o
CMakeFiles/connect.dir/taboccur.cpp.o
CMakeFiles/connect.dir/tabpivot.cpp.o
CMakeFiles/connect.dir/tabsys.cpp.o CMakeFiles/connect.dir/tabtbl.cpp.o
CMakeFiles/connect.dir/tabutil.cpp.o CMakeFiles/connect.dir/tabvir.cpp.o
CMakeFiles/connect.dir/tabxcl.cpp.o CMakeFiles/connect.dir/valblk.cpp.o
CMakeFiles/connect.dir/value.cpp.o CMakeFiles/connect.dir/xindex.cpp.o
CMakeFiles/connect.dir/xobject.cpp.o
CMakeFiles/connect.dir/inihandl.cpp.o
CMakeFiles/connect.dir/filamvct.cpp.o
CMakeFiles/connect.dir/tabvct.cpp.o CMakeFiles/connect.dir/libdoc.cpp.o
CMakeFiles/connect.dir/tabxml.cpp.o CMakeFiles/connect.dir/plgxml.cpp.o
CMakeFiles/connect.dir/filamzip.cpp.o
CMakeFiles/connect.dir/tabzip.cpp.o CMakeFiles/connect.dir/unzip.c.o
CMakeFiles/connect.dir/ioapi.c.o CMakeFiles/connect.dir/zip.c.o
-lpthread ../../libservices/libmysqlservices.a -lz
/home/wmt/nas-sysroot/usr/local/lib/libxml2.so -lpthread
-Wl,-rpath,/home/wmt/nas-sysroot/usr/local/lib

Doesn't specify the location of libz like most of the rest of the ld
commands do (they normally specify ../../../zlib/libz.a). Any ideas for
how I can fix this? I could modify the makefile if it comes to it, but I
don't know which one, or where to modify.

Hamish

On 28/06/2019 15:59, Hamish MB wrote:
> Okay, well this is weird:
>
> Same error, and even if I use the bundled zlib (WITH_ZLIB="bundled"), it
> still fails when trying to link with:
>
> /home/wmt/x-tools/arm-unknown-linux-gnueabi/lib/gcc/arm-unknown-linux-gnueabi/4.7.2/../../../../arm-unknown-linux-gnueabi/bin/ld:
> cannot find -lz
>
> Any ideas anyone?
>
> Hamish
>
> On 28/06/2019 15:40, Hamish MB wrote:
>> I could probably use clang, but crosstool-ng doesn't support it, and it
>> took me ages to get this cross compiler working :)
>>
>> I think 10.3 will be fine, given the target is currently running the
>> ancient mysql 5.1! I'll give it a go, hopefully with more luck.
>>
>> Hamish
>>
>> On 28/06/2019 15:32, Marko Mäkelä wrote:
>>> I think that the earliest GCC that supports enough of C++11 is 4.8.
>>> So, you should be out of luck compiling 10.4 with GCC 4.7.
>>>
>>> You might also try clang, if that is available for your platform.
>>>
>>> Marko
>>>
>>> On Fri, Jun 28, 2019 at 5:23 PM Hamish MB <hamishmb@xxxxxxxxxx> wrote:
>>>> Hi,
>>>>
>>>> Maybe I should try 10.3 then - the newest cross compiler I can build for
>>>> this platform is GCC 4.7, which has only experimental support for C++11.
>>>> I could also try the bundled Zlib, seeing as I'm trying to use the
>>>> system one at the moment. It gets fairly far, so I imagine it should be
>>>> possible.
>>>>
>>>> Hamish
>>>>
>>>> On 28/06/2019 15:19, Marko Mäkelä wrote:
>>>>> Hi Harnish,
>>>>>
>>>>> It can be WITH_SSL=bundled or WITH_SSL=system. Possibly the bundled
>>>>> zlib is missing some recent change.
>>>>> For WITH_SSL=system to work, you should have installed a package like
>>>>> zlib1g-dev.
>>>>>
>>>>> I think that there are good chances that MariaDB 10.4 can be compiled
>>>>> for ARMv5 (or at least ARMv7), because 10.3 is available in the Debian
>>>>> GNU/Linux repository:
>>>>> https://packages.debian.org/buster/mariadb-server-core-10.3
>>>>>
>>>>> A main difference between 10.3 and 10.4 is that 10.4 requires a
>>>>> compiler that supports C++11.
>>>>>
>>>>> Marko
>>>>>
>>>>> On Fri, Jun 28, 2019 at 5:06 PM Hamish MB <hamishmb@xxxxxxxxxx> wrote:
>>>>>> Hi Marko,
>>>>>>
>>>>>> I found that option, but eventually ran into a different issue. It turns
>>>>>> out that zlib isn't being found by the linker, even if I explicitly set
>>>>>> the path. Are there any examples of working toolchain.cmake files
>>>>>> you/anyone else knows of?
>>>>>>
>>>>>> I think it's mostly because I'm misconfiguring that file somehow, but
>>>>>> I'm not sure how.
>>>>>>
>>>>>> Hamish
>>>>>>
>>>>>>
>>>>>> On 28/06/2019 15:04, Marko Mäkelä wrote:
>>>>>>> Hi Harnish,
>>>>>>>
>>>>>>> Yes, you can disable storage engines that you do not need, like this:
>>>>>>> cmake -DPLUGIN_MROONGA=NO
>>>>>>>
>>>>>>> This syntax works starting with MariaDB 10.1.
>>>>>>>
>>>>>>> For example, I am developing InnoDB, and to cut the time for
>>>>>>> compilation and running tests, I disable a bunch of storage engines:
>>>>>>>
>>>>>>> cmake -DPLUGIN_{ARCHIVE,TOKUDB,MROONGA,OQGRAPH,ROCKSDB,CONNECT,SPIDER}=NO
>>>>>>>
>>>>>>> Side note: I would not be surprised if you ran into problems with
>>>>>>> TokuDB. I hope that we can finally remove it in MariaDB 10.5:
>>>>>>> https://jira.mariadb.org/browse/MDEV-19780
>>>>>>>
>>>>>>> With best regards,
>>>>>>>
>>>>>>> Marko Mäkelä
>>>>>>> Lead Developer InnoDB
>>>>>>> MariaDB Corporation
>>>>>> _______________________________________________
>>>>>> Mailing list: https://launchpad.net/~maria-discuss
>>>>>> Post to     : maria-discuss@xxxxxxxxxxxxxxxxxxx
>>>>>> Unsubscribe : https://launchpad.net/~maria-discuss
>>>>>> More help   : https://help.launchpad.net/ListHelp
>>>> _______________________________________________
>>>> Mailing list: https://launchpad.net/~maria-discuss
>>>> Post to     : maria-discuss@xxxxxxxxxxxxxxxxxxx
>>>> Unsubscribe : https://launchpad.net/~maria-discuss
>>>> More help   : https://help.launchpad.net/ListHelp
>> _______________________________________________
>> Mailing list: https://launchpad.net/~maria-discuss
>> Post to     : maria-discuss@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~maria-discuss
>> More help   : https://help.launchpad.net/ListHelp
> _______________________________________________
> Mailing list: https://launchpad.net/~maria-discuss
> Post to     : maria-discuss@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~maria-discuss
> More help   : https://help.launchpad.net/ListHelp

Follow ups

References