crosstool-ng | A versatile toolchain generator | Blockchain library
kandi X-RAY | crosstool-ng Summary
kandi X-RAY | crosstool-ng Summary
Crosstool-NG aims at building toolchains. Toolchains are an essential component in a software development project. It will compile, assemble and link the code that is being developed. Some pieces of the toolchain will eventually end up in the resulting binaries: static libraries are but an example. Before reporting a bug, please read bug reporting guidelines. Bugs that do not provide the required information will be closed without explanation. Refer to documentation at crosstool-NG website for more information on how to configure, install and use crosstool-NG. Note 1: If you elect to build a uClibc-based toolchain, you will have to prepare a config file for uClibc with <= crosstool-NG-1.21.0. In >= crosstool-NG-1.22.0 you only need to prepare a config file for uClibc(or uClibc-ng) if you really need a custom config for uClibc. Note 2: If you call ct-ng --help you will get help for make(2). This is because ct-ng is in fact a make(2) script. There is no clean workaround for this.
Support
Quality
Security
License
Reuse
Top functions reviewed by kandi - BETA
Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of crosstool-ng
crosstool-ng Key Features
crosstool-ng Examples and Code Snippets
Community Discussions
Trending Discussions on crosstool-ng
QUESTION
I'm trying to use ffmpeg to prepare a mp4 file which is vertical recorded for upload to youtube. (on a synology DS220+) In the output file I want to have no black bars on the side but blured sodebars of the movie itself. This I'm trying to do whit this code (in the end I want to automate this process, but maybe there is a better way to do this):
...ANSWER
Answered 2021-Mar-14 at 17:24Your ffmpeg
is from 2015 and is too old. Try upgrading using SynoCommunity.
QUESTION
I was trying to use crosstool-ng and get it work to build a cross compiler to target a gnu-based linux distros, since alpine comes with musl-libc I guess the cross tool couldn't directly use the type declarations used in gnu's.
More precisely, at the time of installation of the linux headers when building the toolchain, the /usr/include/linux/types.h
does not contain some type declarations which errors for:
ANSWER
Answered 2021-Mar-13 at 15:57After a lot of hit and trials, I was able to successfully build the toolchain.
The musl-libc is smart, it defines those types itself. So the rpc headers https://code.woboq.org/userspace/glibc/sunrpc/rpc/types.h.html#77 here were conflicting with the types __u_char
that GNU defines but does not define u_char
and more.
We can solve this by passing -D__daddr_t_defined -D__u_char_defined
macros to the c flags on build.
QUESTION
I'm trying to cross-compile Python 2.7.18 for an x86,uclibc machine using a crosstool-ng example toolchain. The commands used are the following:
CONFIG_SITE=config.site CC=/home/msainz/x-tools/x86_64-unknown-linux-uclibc/bin/x86_64-unknown-linux-uclibc-gcc CXX=/home/msainz/x-tools/x86_64-unknown-linux-uclibc/bin/x86_64-unknown-linux-uclibc-g++ AR=/home/msainz/x-tools/x86_64-unknown-linux-uclibc/bin/x86_64-unknown-linux-uclibc-ar RANLIB=/home/msainz/x-tools/x86_64-unknown-linux-uclibc/bin/x86_64-unknown-linux-uclibc-ranlib READELF=/home/msainz/x-tools/x86_64-unknown-linux-uclibc/bin/x86_64-unknown-linux-uclibc-readelf LDFLAGS="-L/home/msainz/Projects/Selene/WP3/local/uclibc/base_rootfs/lib -L/home/msainz/Projects/Selene/WP3/local/uclibc/base_rootfs/usr/lib" CFLAGS="-I/home/msainz/Projects/Selene/WP3/local/uclibc/base_rootfs/usr/include -I/home/msainz/Projects/Selene/WP3/local/uclibc/base_rootfs/include" CPPFLAGS="-I/home/msainz/Projects/Selene/WP3/local/uclibc/base_rootfs/usr/include -I/home/msainz/Projects/Selene/WP3/local/uclibc/base_rootfs/include" ./configure --enable-shared --host=x86_64-unknown-linux-uclibc --build=x86_64 --disable-ipv6 --prefix=/home/msainz/Projects/python2_top_uclibc/
followed by
PATH=$PATH:/home/msainz/Projects/python2_top_glibc/bin/ make
and
PATH=$PATH:/home/msainz/Projects/python2_top_glibc/bin/ make install
Execution ends with the following error:
fi /home/msainz/x-tools/x86_64-unknown-linux-uclibc/bin/x86_64-unknown-linux-uclibc-gcc -L/home/msainz/Projects/Selene/WP3/local/uclibc/base_rootfs/lib -L/home/msainz/Projects/Selene/WP3/local/uclibc/base_rootfs/usr/lib -Xlinker -export-dynamic -o python \ Modules/python.o \ -L. -lpython2.7 -ldl -lpthread -lm _PYTHON_PROJECT_BASE=/home/msainz/Projects/Python-2.7.18 _PYTHON_HOST_PLATFORM=linux2-x86_64 PYTHONPATH=./Lib:./Lib/plat-linux2 python -S -m sysconfig --generate-posix-vars ;\ if test $? -ne 0 ; then \ echo "generate-posix-vars failed" ; \ rm -f ./pybuilddir.txt ; \ exit 1 ; \ fi python: error while loading shared libraries: libc.so.0: cannot open shared object file: No such file or directory generate-posix-vars failed make: *** [Makefile:523: pybuilddir.txt] Error 1
python2_top_glibc
dir contains a previous Python-2.7.18 installation but for native glibc which was compiled perfectly. libc.so.0 is in fact in the base_rootfs of target system, which is being linked in ./configure stage. I'm stuck at this at the moment. Any clue will be appreciated. Any additional info will be supplied on demand.
Thanks in advance.
...ANSWER
Answered 2020-Nov-19 at 10:41python: cannot open shared object file: No such file or directory
This is a run-time loader error. You are trying to run a python
executable that is linked against that libc.so.0
.
If this executable can actually run in your host environment, you can enable it by adding your base_rootfs library to LD_LIBRARY_PATH
. Otherwise, you need to use your host python executable in this step of the build process, or disable it altogether.
QUESTION
I'm creating a mp4 video from jpegs with ffmpeg, using the following command:
ffmpeg -y -threads 0 -f image2 -i jpegs/%05d.jpg -framerate 10 video.mp4
The resulting video will play fine with VLC, but will not play in a Jupyter notebook via:
...ANSWER
Answered 2020-Nov-18 at 23:49algo-1-poqk5_1 | Stream mapping:
algo-1-poqk5_1 | Stream #0:0 -> #0:0 (mjpeg (native) -> mpeg4 (native))
QUESTION
I am trying to cross-compile Dropbear for an x86 machine where glibc is missing and instead, uclibc is being used. For that aim, I have cross-compiled zlib for this same instruction set using a custom crosstool-ng toolchain and installed it to a custom location.
...ANSWER
Answered 2020-Oct-28 at 11:20Solved the problem adding --with-zlib=/home/msainz/Projects/zlib_install/
to the ./configure
call.
QUESTION
I'm studying with a Mastering Embedded Linux Programming second edition
can't see the u-boot prompt (U-Boot#)
I used u-boot v2020.07, crosstool-ng v1.24.0 and copied MLO, u-boot.img to sd card.
How can I solve this problem?
thanks.
...ANSWER
Answered 2020-Oct-27 at 11:34This may be that the prompt you are getting is the the one you were expecting, but you definitively got a prompt from u-boot, i.e. the final =>
in the output you posted.
If you enter help
then press enter, you should get the list of available commands.
This book is five years old now, and you are using u-boot 2020.07, this may explain the discrepancy.
The author may have customized the prompt message in the u-boot he compiled as well: you can do the same by adding a adding/modifying the value in the CONFIG_SYS_PROMPT
symbol definition in the configuration file you used, say configs/am335x_evm_defconfig
QUESTION
I saw a few posts regarding this topic, but nothing really helped my cause, and so restating my problem here.
I would like to build my own toolchain, U-boot and the mainline Linux kernel to be ported on a particular processor. Since I currently am in possession of a Raspberry Pi 4B, I decided to use it to test my binaries stage-by-stage on it.
I performed the following so far:
- Built a 64-bit toolchain using Crosstool-ng (v1.24.0) - Got \x-tools\aarch64-rpi3-linux-gnu
- Cloned U-boot and built v2020.07 version thereby generating u-boot.bin + other files(Built using rpi_4_defconfig and rpi_arm64_defconfig)
- Cloned Linux Kernel (v5.4.65 and v5.8.9), added bcm2711_defconfig in arch/arm64/configs from the Raspberry Pi repositories and built the Linux Kernel - generating vmlinux, Image, Image.gz, System.map, bcm2711-rpi-4-b.dtb + other files
- Created two partitions boot (FAT32), rootfs (Ext4) on my 32-GB SD card
- Copied u-boot.bin, Kernel images, start4.elf, fixup4.dat into the boot partition
- Have this in config.txt//config.txt
kernel=u-boot.bin
Serial console output!enable_uart=1 7. Tried connecting RPi to the monitor with HDMI cable
What I see: The device seems to switch on, I see some quick green LED blinks, and then it is the red LED only that keeps steady. The monitor gets signal indicated by the fact that it brightens, but the screen is blank. I expected a command prompt with UART > or something, but nothing came.
Questions:
- Can someone comment what is missing on my side?
- What are the absolute minimum stuff to get an own U-Boot, own Linux Kernel and a root FS running on a Raspberry Pi 4B? (with regards to .elf, fix*.dat, etc., + the settings on config.txt, cmdline.txt? )
ANSWER
Answered 2020-Sep-24 at 18:53I hope this answers the U-Boot side of the question:
The following worked for me to boot a 1 GiB Raspberry 4 using a 64bit Raspbian kernel:
Build u-boot v2020.10-rc5 (on Debian Bullseye with GCC 10).
QUESTION
I'm trying to compile a program using -fsanitize=undefined using the conda g++ compiler. I'm running into `__ubsan_handle_type_mismatch' linker errors. I've used the flags in the compiles and the linking as suggested in:
including adding -lubsan to the end of the link and compile commands which I know isn't recommended but I had no success. I've also made sure my LD_LIBRARY_PATH is empty so that there isn't any trouble coming from that aspect.
A minimal example problem including the configuration of my python environment is below
vehicles.h
...ANSWER
Answered 2020-Sep-14 at 17:49There could be a few possible issues.
Channel MixingMissing references in shared objects is a typical symptom of mixing package builds that come from different channels. This is because different channels use different build stacks and so symbols may have different names in shared objects compiled under those stacks.
Try to source as many of the packages you use from a single channel. Since most people often need at least one package that is only on conda-forge, the most generic solution is to give conda-forge priority when creating the environment, i.e., try
QUESTION
I am attempting to cross compile a project for my raspberry pi (32 bit armv8) on my ubuntu machine. I set up a toolchain using crosstool-NG and compiling works, but linking fails. My CMake toolchain file is as follows:
...ANSWER
Answered 2020-Jul-21 at 23:36You need to use static library instead. then the executable will include the binary of the libraries. But keep in mind the executable file will be bigger ( depends obviously which lib...). When you using cross compile, you should check that the libraries you use exist in the other environment you execute the program. The solution will be to add STATIC word according to CmakeList.txt file
QUESTION
I am messing around with creating my own custom gcc toolchain for an arm Cortex-A5 cpu, and I am trying to dive as deeply as possible into each step. I have deliberately avoided using crosstool-ng or other tools to assist, in order to get a better understanding of what is going on in the process of creating a toolchain.
One thing stumples me though. During configuration and building of binutils, I need to specify a target (--target). This target can be either the classic host-tuple (ex: arm-none-linux-gnuabi) or a specific type, something like i686-elf for example.
Why is this target needed? and what does it specifically do with the generated "as" and "ld" programs built by binutils?
For example, if I build it with arm-none-linux-gnueabi, it looks like the resulting "as" program supports every arm instruction set under the sun (armv4t, armv5, e.t.c.).
Is it simply for saving space in the resulting executable? Or is something more going on?
I would get it, if I configured the binutils for a specific instruction set for example. Build me an assembler that understands armv4t instructions.
Looking through the source of binutils and gas specifically, it looks like the host-tuple is selecting some header files located in gas/config/tc*, gas/config/te*. Again, this seems arbitrary, as it is broad categories of systems.
Sorry for the rambling :) I guess my questing can be stated as: Why is binutils not an all-in-one package?
...ANSWER
Answered 2020-Mar-11 at 15:42Why is this target needed?
Because there are (many) different target architectures. ARM assembler / code is different from PowerPC is different from x86 etc. In principle it would have been possible to design one tool for all targets, but that was not the approach taken at te time.
Focus was mainly on speed / performance. The executables are small as of today's 'standards' but combining all > 40 architectures and all tools like as
, ld
, nm
etc. would be / have been quite clunky.
Moreover, not only are modern host machines much more powerful, that also applies to the compiler / assembled programs, sometime zillions of lines of (preprocessed) C++ to compile. This means the overall build times shifted much more in the direction of compilation that in the old days.
Only different core families are usually switchable / selectable per options.
Community Discussions, Code Snippets contain sources that include Stack Exchange Network
Vulnerabilities
No vulnerabilities reported
Install crosstool-ng
Support
Reuse Trending Solutions
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
Find more librariesStay Updated
Subscribe to our newsletter for trending solutions and developer bootcamps
Share this Page