Re: Missing "standard" headers in FC37 arm (aarch64) C/C++ cross-compiler RPMs ??

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Jun 1, 2023 at 4:30 PM ron flory via users
<users@xxxxxxxxxxxxxxxxxxxxxxx> wrote:
>
> Hi- am hopefully missing something dumb/obvious here---
>
>  Am trying to cross-compile for raspberry-pi, but some basic headers appear to be missing, or not redirecting to 'generics'.
>
> -----
> Install the cross-compiler(s):
>     dnf install gcc-aarch64-linux-gnu  gcc-c++-aarch64-linux-gnu
>
> -----
> Compile hello_world sample:
>     aarch64-linux-gnu-gcc  hello_world.cpp -o hello_world
>
> Results:
> hello_world.c:1:10: fatal error: stdio.h: No such file or directory
>     1 | #include <stdio.h>
>       |          ^~~~~~~~~
> compilation terminated.
>
> -----
> Hello_world sample consists of:
>
> #include <stdio.h>
> #include <stdlib.h>
>
> int main(int argc, char *argv[])
> {
>         printf("Hello World\n");
>         return(0);
> }

When cross-compiling, you typically need to setup the tools (for the
cross-compile) and the include and library path (for the
cross-compile). Assuming aarch64-linux-gnu-gcc is the only tool you
need, you are still missing include and library paths.

You can add include and library paths via --isysroot and --sysroot. So
something like:

    AARCH64_INCL="..."
    AARCH64_LIB="..."
    aarch64-linux-gnu-gcc -o hello_world \
        --isysroot="${AARCH64_INCL}" hello_world.cpp \
        --sysroot="${AARCH64_LIB}"

When you are building for the host, like x86_64, stuff is found in
/usr by default, and you don't need to specify --isysroot and
--sysroot.

When building for aarch64, your cross-compile headers will be
somewhere like /usr/aarch64/include, and libraries will be in
/usr/aarch64/lib. So you would use AARCH64_INCL=/usr/aarch64 and
AARCH64_LIB=/usr/aarch64. --isysroot should add the trailing include/
for you, and --sysroot should add the trailing lib/ for you.

In reality, it is usually a little more complex, like when building a
library for Android or iOS. In this case you usually want to set your
tools, too. (Tools like CC, CXX, AR and LD). For an example of scripts
that setup those environments, see
https://github.com/weidai11/cryptopp/blob/master/TestScripts/setenv-android.sh
and https://github.com/weidai11/cryptopp/blob/master/TestScripts/setenv-ios.sh
.

Jeff
_______________________________________________
users mailing list -- users@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to users-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/users@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue



[Index of Archives]     [Older Fedora Users]     [Fedora Announce]     [Fedora Package Announce]     [EPEL Announce]     [EPEL Devel]     [Fedora Magazine]     [Fedora Summer Coding]     [Fedora Laptop]     [Fedora Cloud]     [Fedora Advisory Board]     [Fedora Education]     [Fedora Security]     [Fedora Scitech]     [Fedora Robotics]     [Fedora Infrastructure]     [Fedora Websites]     [Anaconda Devel]     [Fedora Devel Java]     [Fedora Desktop]     [Fedora Fonts]     [Fedora Marketing]     [Fedora Management Tools]     [Fedora Mentors]     [Fedora Package Review]     [Fedora R Devel]     [Fedora PHP Devel]     [Kickstart]     [Fedora Music]     [Fedora Packaging]     [Fedora SELinux]     [Fedora Legal]     [Fedora Kernel]     [Fedora OCaml]     [Coolkey]     [Virtualization Tools]     [ET Management Tools]     [Yum Users]     [Yosemite News]     [Gnome Users]     [KDE Users]     [Fedora Art]     [Fedora Docs]     [Fedora Sparc]     [Libvirt Users]     [Fedora ARM]

  Powered by Linux