|Subject:||Re: Cross compile gpsd-3.20.1~dev for arm with buildroot|
|Date:||Mon, 8 Jun 2020 14:20:46 +0200|
|User-agent:||Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.9.0|
Please unpack buildroot-logs.tar.gz for the 3 files
"compile-3.18_success.txt", "compile-3.19_success.txt" and
Yo Florian! On Fri, 5 Jun 2020 16:39:37 +0200 Florian Kiera <firstname.lastname@example.org> wrote:I am trying to update the gpsd version for our buildroot and keep running into an error:3.18 is too old to support. You have reported this as before. Exact same problem as before: unrecognized option '-Wl,-Bsymbolic' As before, that is not in gpsd: $ fgrep Bsymbol * -r $ It is coming from somewhere else in your system, not from gpsd.
Why does gpsd want to use "/home/florian/Desktop/buildroot-2019.02.8.2/output/host/bin/arm-buildroot-linux-uclibcgnueabihf-ld"? Why/Where does it "import" it from LD?
With g++ the flag '-Wl,-Bsymbolic' would cause no trouble (see line 132 in compile-3.18_success.txt, line 126 in compile-3.19_success.txt and compare to line 204 of compile-3.20_fail.txt)
I already know buildroot can be tricky sometimes. But how it comes that scons/gpsd is using the arm-buildroot-linux-uclibcgnueabihf-ld to compile the libgps.so while on x86_64 it uses the g++?You specified the CC and LD yourself, not scons/gpsd: CC="/home/florian/Desktop/buildroot-2019.02.8.2/output/host/bin/arm-buildroot-linux-uclibcgnueabihf-gcc" GCC="/home/florian/Desktop/buildroot-2019.02.8.2/output/host/bin/arm-buildroot-linux-uclibcgnueabihf-gcc" CPP="/home/florian/Desktop/buildroot-2019.02.8.2/output/host/bin/arm-buildroot-linux-uclibcgnueabihf-cpp" CXX="/home/florian/Desktop/buildroot-2019.02.8.2/output/host/bin/arm-buildroot-linux-uclibcgnueabihf-g++" LD="/home/florian/Desktop/buildroot-2019.02.8.2/output/host/bin/arm-buildroot-linux-uclibcgnueabihf-ld" I see nowhere in your bulid log the ld is used to compile.
On the 3.20 "compile-3.20_fail.txt" it does use LD (which causes
the fail; line 204) on the 3.18 it uses the g++ as intented (line
132, compile-3.18_success.txt; line 126,
compile-3.19_success.txt). All are compiling for arm, all got the
same options/flags which are set by default from buildroot.
What I was up to is: The input is the same, the output is
The .mk file is for all versions the same (except the python
version needs to be updated) since it just runs scons with all the
ld/cc/cxx flags and options (line 12 of the both success files and
line 2 of compile-3.20_fail.txt). The only thing that changed is
gpsd (SConstruct) which imports the LD even tho its not needed at
all. LD is never supposed to be used in the whole compile process;
neither on the normal computer nor on arm. Thought you might know
where it loads the variable LD.
Another proof is compiling gpsd-3.19. I use the same gpsd.mk file and just installed gpsd 3.19 instead of 3.18 which works perfectly fine. Just 3.20+ runs into the thought of using LD (ld) instead of CXX (g++) and I cannot tell where and why yet.
|[Prev in Thread]||Current Thread||[Next in Thread]|