-
Notifications
You must be signed in to change notification settings - Fork 59
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Compiling issue in linux #81
Comments
Missing main is a symptom, not the problem. The linker is being invoked to build an rv64 executable when this is an rv32 system. (It's confusing because the entire chain is called "riscv64" but the flags should be setting flags to build and link in 32-bit mode. The hint is the "...lib/rv64imacfd" part of the pathname. run make V=1 and show us the lines leading up to that linker invocation. It will be called by collect2 which is called by the gcc front-end. Do you have any environmental variables like CFLAGs or LDFLAGS that are polluting the build environment? Do other directories build successfully for you? Actually, I'm seeing that directory fail to build for a different reason, but the failure is ignored (!) and is covered up in the avalanche of jibber jabber of unnecessary recompilation (!!). But the invocation that matches what I think is failing for you starts: riscv64-unknown-elf-gcc -march=rv32imfc -mabi=ilp32f -Wl,--cref -nostartfiles -Wl,--gc-sections -Wl,-static -Wl,--start-gr [ ... ] Your failure is about what I'd expect if the -march -mabi flags were missing. |
Also, it's known that some examples are not possible to compile, although this one if I remember correctly should work fine. |
Thank you for the quick reply. However, when going to the bl602_demo_wifi it still does not compile, with following errors 'make V=1 |
Awesome. Glad we got that fixed without a lot of pain.
That failure is due to missing pieces within the blob of the wifi trying to
use symbols that aren't provided by flash.ld. I get the exact failures on
my system. I took the problem to the developer chat room last night about
3am and haven't heard back yet. My guess is that it falls into what Marek
is describing: a code block that just doesn't work.
We've thus solved the original problem. The ability to
build bl602_demo_wifi is a different problem and it's not solved. I don't
know if people will scroll back in the IRC thing to read my description
when they awaken, but that's where I took the conversation.
…On Wed, Nov 25, 2020 at 2:20 AM Marco Merlin ***@***.***> wrote:
Thank you for the quick reply.
I found that indeed I had the LDFLAGS set, therefore after doing
unset LDFLAGS
the bl602_boot2 compiled flawlessly.
However, when going to the bl602_demo_wifi it still does not compile, with
following errors
'make V=1
...
/media/marco/DATA/programming/riscv/bl_iot_sdk-master/toolchain/riscv/Linux/bin/../lib/gcc/riscv64-unknown-elf/8.3.0/../../../../riscv64-unknown-elf/bin/ld:
/media/marco/DATA/programming/riscv/bl_iot_sdk-master/components/bl602/bl602_wifi/lib/libbl602_wifi.a(cfg_api.o):
in function cfg_api_element_set':
/home/rjwang/work/bl_iot_sdk.release/components/bl602/bl602_wifi/ip/cfg/cfg_api.c:91:
undefined reference to _ld_bl_static_cfg_entry_start'
/media/marco/DATA/programming/riscv/bl_iot_sdk-master/toolchain/riscv/Linux/bin/../lib/gcc/riscv64-unknown-elf/8.3.0/../../../../riscv64-unknown-elf/bin/ld:
/home/rjwang/work/bl_iot_sdk.release/components/bl602/bl602_wifi/ip/cfg/cfg_api.c:91:
undefined reference to _ld_bl_static_cfg_entry_end'
/media/marco/DATA/programming/riscv/bl_iot_sdk-master/toolchain/riscv/Linux/bin/../lib/gcc/riscv64-unknown-elf/8.3.0/../../../../riscv64-unknown-elf/bin/ld:
/home/rjwang/work/bl_iot_sdk.release/components/bl602/bl602_wifi/ip/cfg/cfg_api.c:164:
undefined reference to _ld_bl_static_cfg_entry_start'
/media/marco/DATA/programming/riscv/bl_iot_sdk-master/toolchain/riscv/Linux/bin/../lib/gcc/riscv64-unknown-elf/8.3.0/../../../../riscv64-unknown-elf/bin/ld:
/home/rjwang/work/bl_iot_sdk.release/components/bl602/bl602_wifi/ip/cfg/cfg_api.c:167:
undefined reference to _ld_bl_static_cfg_entry_end'
/media/marco/DATA/programming/riscv/bl_iot_sdk-master/toolchain/riscv/Linux/bin/../lib/gcc/riscv64-unknown-elf/8.3.0/../../../../riscv64-unknown-elf/bin/ld:
/media/marco/DATA/programming/riscv/bl_iot_sdk-master/components/bl602/bl602_wifi/lib/libbl602_wifi.a(cfg_task.o):
in function dump_cfg_entries':
/home/rjwang/work/bl_iot_sdk.release/components/bl602/bl602_wifi/ip/cfg/cfg_task.c:24:
undefined reference to _ld_bl_static_cfg_entry_start'
/media/marco/DATA/programming/riscv/bl_iot_sdk-master/toolchain/riscv/Linux/bin/../lib/gcc/riscv64-unknown-elf/8.3.0/../../../../riscv64-unknown-elf/bin/ld:
/home/rjwang/work/bl_iot_sdk.release/components/bl602/bl602_wifi/ip/cfg/cfg_task.c:28:
undefined reference to _ld_bl_static_cfg_entry_end'
/media/marco/DATA/programming/riscv/bl_iot_sdk-master/toolchain/riscv/Linux/bin/../lib/gcc/riscv64-unknown-elf/8.3.0/../../../../riscv64-unknown-elf/bin/ld:
/home/rjwang/work/bl_iot_sdk.release/components/bl602/bl602_wifi/ip/cfg/cfg_task.c:24:
undefined reference to _ld_bl_static_cfg_entry_start'
/media/marco/DATA/programming/riscv/bl_iot_sdk-master/toolchain/riscv/Linux/bin/../lib/gcc/riscv64-unknown-elf/8.3.0/../../../../riscv64-unknown-elf/bin/ld:
/home/rjwang/work/bl_iot_sdk.release/components/bl602/bl602_wifi/ip/cfg/cfg_task.c:27:
undefined reference to _ld_bl_static_cfg_entry_end'
collect2: error: ld returned 1 exit status
make: ***
[/media/marco/DATA/programming/riscv/bl_iot_sdk-master/make_scripts_riscv/
project.mk:420:
/media/marco/DATA/programming/riscv/bl_iot_sdk-master/customer_app/bl602_demo_wifi/build_out/bl602_demo_wifi.elf]
Errore 1
'
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#81 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ACCSD3ZB23UO3AT43LU6VC3SRS45LANCNFSM4UBPSFVA>
.
|
Thank you Robert for your help and comment. |
Correct. See my (lonely) conversation on matrix.io from maybe six or seven
hours ago.
I didn't loop backward to see how long this failure has existed.
libbl602_wifi.a(cfg_task.o) inside the binary blob is linking against those
symbols and they don't exist. Similar symbols are provided by the flash.ld
script, but this app doesn't link because nothing provides those symbols.
It looks to be configuration data (something like a compiled foo.ini tree)
that the WiFi module is wanting, but isn't finding it. Those symbols don't
appear in the source tree that I can find.
…On Wed, Nov 25, 2020 at 9:15 AM Marco Merlin ***@***.***> wrote:
Thank you Robert for your help and comment.
Do you mean that this example does not work even in the original SDK ?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#81 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ACCSD37Z2NKVVGVQPO5ICQDSRUNPRANCNFSM4UBPSFVA>
.
|
I just pulled the Boufallou tree and tried to build demo_wifi. It fails in almost the same way[1]. I then did a git checkout ee4a10b to revert to their first public release and it failed in the identical way. I have no reason to think this is a Mac-only thing (wait, @bat52 is on Linux) but it's my suspicion this directory has never built in a publicly released version. As an aside, @bat52, do I know you with a slightly different name? [1] Why "almost"? Because Bouffalo accepted a commit today that broke the tree in a slightly overlapping way. :-/ See bouffalolab#18. It's awesome debugging two trees that are broken in three different ways. |
Thank you for your comments @robertlipe ! > As an aside, @bat52, do I know you with a slightly different name? |
"_ld_bl_static_cfg_entry_start" happens when you compile without CONFIG_LINK_ROM=1 |
Thank you for the comment @gamelaster.
but I still get the linker error below.
|
Hi @bat52 |
yes i did!
Il sab 28 nov 2020, 20:25 Marek Kraus <[email protected]> ha scritto:
… Hi @bat52 <https://github.com/bat52>
Did you cleaned the project before compiling?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#81 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AALPNWJOMIDKMUYX54QYCC3SSFFDJANCNFSM4UBPSFVA>
.
|
I've stumbled upon the same issue on MacOS as well, @bat52. Make sure to
|
thank you @suculent , it ended up working as you said. |
Compiling on my ubuntu 20.04 fails.
It seems the components are compiled correctly, but the main is not compiled, nor found by the linker.
See the error below.
marco@Latitude-E6440:/media/marco/DATA/programming/riscv/bl_iot_sdk-master/customer_app/bl602_demo_wifi$ make use existing version.txt file LD build_out/bl602_demo_wifi.elf /media/marco/DATA/programming/riscv/bl_iot_sdk-master/toolchain/riscv/Linux/bin/../lib/gcc/riscv64-unknown-elf/8.3.0/../../../../riscv64-unknown-elf/bin/ld: /media/marco/DATA/programming/riscv/bl_iot_sdk-master/toolchain/riscv/Linux/bin/../lib/gcc/riscv64-unknown-elf/8.3.0/../../../../riscv64-unknown-elf/lib/rv64imafdc/lp64d/crt0.o: in function
.L0 ':(.text+0x2e): undefined reference to
main' collect2: error: ld returned 1 exit status make: *** [/media/marco/DATA/programming/riscv/bl_iot_sdk-master/make_scripts_riscv/project.mk:420: /media/marco/DATA/programming/riscv/bl_iot_sdk-master/customer_app/bl602_demo_wifi/build_out/bl602_demo_wifi.elf] Errore 1
The text was updated successfully, but these errors were encountered: