FAILED: load BTF from vmlinux: No such file or directory
make: *** [Makefile:1164: vmlinux] Error 255
make: *** Deleting file 'vmlinux'
root#akb:/home/akb/SRC/net/net-next#
I have to enable BTF for my BPF xdp program to work.
Environment :on ubuntu 22.04 VM,
net-next(5.19) latest version is compiled and installed on VM. recompiling is giving error.
any pointers...?
Thanks in advance.
I got the same issue resolved.
First you need to make sure
CONFIG_DEBUG_INFO_BTF=y
is set and pahole is installed from https://github.com/acmel/dwarves.
And I enabled
CONFIG_DEBUG_INFO_SWARF4=y
And you have to make the pahole libs linked(This stopped me for long.):
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
My previous failures are:
I did not disable CONFIG_DEBUG_INFO_NONE. This config is for disable all the debug config info.
some modules failure, like SSSE3 and chacha20 module. I just disabled them tool. These are crypto modules not sure why they fail.
I hope this would also help you.
In kernel source, when CONFIG_DEBUG_INFO_BTF is enabled in .config file then copy the vmlinux from /sys/kernel/btf/vmlinux to /usr/lib/modules/uname -r/build/
cp /sys/kernel/btf/vmlinux /usr/lib/modules/uname -r/build/
or
sudo /sys/kernel/btf/vmlinux /usr/lib/modules/uname -r/build/
Related
I am trying to build the latest Linux kernel (GitHub) using a Oracel VM and a 18.04.1-Ubuntu image.
I installed the need packages and probably even more. Here is a part of the packages I installed:
sudo apt-get update
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc bison flex libelf-def kernel-package
The full list can be found here.
I ran the following commands in the linux folder after cloning the repository from GitHub.
$ cp /boot/config-$(uname -r) .config
$ make menuconfig
scripts/kconfig/mconf Kconfig
.config:1118:warning: symbol value 'm' invalid for NF_CT_PROTO_GRE
.config:1923:warning: symbol value 'm' invalid for NET_DEVLINK
.config:7865:warning: symbol value 'm' invalid for ASHMEM
.config:8724:warning: symbol value 'm' invalid for ANDROID_BINDER_IPC
.config:8725:warning: symbol value 'm' invalid for ANDROID_BINDERFS
*** End of the configuration.
*** Execute 'make' to start the build or try 'make help'.
I save and exited menuconfig. And finally make leads to the following error.
$ make -j2
Makefile:608: include/config/auto.conf: No such file or directory
Makefile:660: include/config/auto.conf.cmd: No such file or directory
HOSTCC scripts/kconfig/conf.o
HOSTLD scripts/kconfig/conf
scripts/kconfig/conf --syncconfig Kconfig
*** Error during sync of the configuration.
scripts/kconfig/Makefile:73: recipe for target 'syncconfig' failed
make[2]: *** [syncconfig] Error 1
Makefile:562: recipe for target 'syncconfig' failed
make[1]: *** [syncconfig] Error 2
Makefile:678: recipe for target 'include/config/auto.conf.cmd' failed
make: *** [include/config/auto.conf.cmd] Error 2
make: *** Deleting file 'include/config/auto.conf.cmd'
Looks like make is expecting some additional configuration files include/config/auto.conf. Does anyone have a clue for me.
Thanks!
Trying to compile kernel 5.6.3 as non-root, I ran into this exact problem.
Running the suggestion from Oandiy's comment
git clean -xdf
revealed that I had files in my source tree that were owned by root and could not be deleted. Looking in my history I found,
sudo make localmodconfig # DO NOT DO THIS
which had installed files, as root, in include/config/* and include/generated/autoconf.h.
To see if you have the same problem, run
sudo find . -uid 0
or just look at the error messages of git clean -xdf (there shouldn't be any).
After deleting all files and directories owned by root, I recovered from this deadlock with:
unset ARCH
cp .config ../config.backup # If you still have this.
git clean -xdf # No errors (this also deletes .config)
cp ../config.backup .config # Or generate a new one *).
make olddefconfig # Printed at the end: 'No change to .config'
Note that I needed to clear ARCH from my environment.
After this I went on as usual,
VERSION=5.6.3 # I have checked out tag v5.6.3 **)
FLAVOUR=lowlatlocxhci # Or whatever you want to call your kernel.
make -j8 deb-pkg LOCALVERSION=-$FLAVOUR
sudo dpkg -i ../linux-headers-$VERSION-${FLAVOUR}_$VERSION-$FLAVOUR-1_amd64.deb ../linux-image-$VERSION-${FLAVOUR}_$VERSION-${FLAVOUR}-1_amd64.deb
The last command fails to compile virtualbox kernel modules at the moment, but I don't care about those, and those errors can be ignored (as long as you don't use virtual box).
*) The .config used was prepared by booting to a kernel with everything (ie, a dist. kernel), copying its config from /boot to the source tree and running make localmodconfig after making sure all kernel modules that I needed where loaded (by running those applications that cause such modules to be loaded). And finally running make menuconfig to turn off CONFIG_DEBUG_INFO in this kernel and to turn a few things that are normally built into the kernel into modules as well (which I needed for some reason).
**) My git tree has been prepared with:
VERSION=5.6.3
FLAVOUR=lowlatlocxhci
git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-$VERSION-$FLAVOUR-$VERSION-$FLAVOUR
cd linux-$VERSION-$FLAVOUR-$VERSION-$FLAVOUR
git checkout -b test_$FLAVOUR v$VERSION
# Make manual changes here, and commit as usual.
I'm trying to install ROOT (from cern) and I have a problem. This is the error that I have after make comand.
bin/rootcling: error while loading shared libraries: libtinfow.so.6: cannot open shared object file: No such file or directory
How can I resolve this? I looked for a libtinfow package but seems it doen't exist!
You need to install ncurses shared lib, and while configuring ncurses before building do:
./configure --prefix=/path/to/ncurses --with-termlib --with-shared --enable-widec
I'm trying to compile Bitcoin in Gitian for OSX. I've ran the following line.
./bin/gbuild ../bitcoin/contrib/gitian-descriptors/gitian-osx-native.yml
That produces an error in the build log as follows.
cd libprunetrie && make
make[1]: Entering directory `/home/ubuntu/build/osx-cross-depends/build/toolchain4-10cc648683617cca8bcbeae507888099b41b530c/cctools2odcctools/odcctools-809/libprunetrie'
mkdir -p `dirname PruneTrie.o`
In file included from allocate.c:29:0:
../include/stuff/errors.h:39:1: error: unknown type name ‘uint32_t’
../include/stuff/errors.h:79:5: error: unknown type name ‘kern_return_t’
../include/stuff/errors.h:86:5: error: unknown type name ‘kern_return_t’
What do I need to do to make this work? If I'm not including enough information, please let me know what you need me to tell you. I didn't change the yml file from the official Bitcoin sources or anything else and I'm compiling on a Ubuntu 12.04.4 64Bit VirtualBox instance using LXC.
In case anyone else comes accross this issue, it has something to do with the way a Mac OSX system packages the tar file. You can't package it on a regular Linux system, it has to be Darwin Unix. (Mac) I came accross the link below which points to a ready made version of the stripped down Apple SDK file for Bitcoin. (MacOSX10.7.sdk.tar.gz)
https://github.com/deuscoin/deuscoin/blob/master/doc/building-deuscoin.md
Hopefully this helps someone else.
I have a notebook has a optimus graphic cards(Nvidia). So I want to relax notebook with acpi_call method. But error is given. I had downloaded acpi_call_master from this web page: (https://github.com/mkottman/acpi_call)
Then this zip is exracted by me, and following code is called in terminal by me. However these errors are given:
dagli#dagli-Inspiron-N5110:~/acpi_call-master$ ls
acpi_call.c examples Makefile README.md support
dagli#dagli-Inspiron-N5110:~/acpi_call-master$ sudo make
make -C /lib/modules/3.5.0-17-generic/build M=/home/dagli/acpi_call-master modules
make: *** /lib/modules/3.5.0-17-generic/build: Böyle bir dosya ya da dizin yok. Durdu.
make: *** [default] Hata 2
This is a kernel module and as such requires the Linux kernel headers to build. In many cases you should be able to identify the package that would provide that file using dpkg such as:
dpkg --search /lib/modules/3.5.0-17-generic/build
You can do the same on the Ubuntu package site. Though it didn't exactly work, the package you need will be something like linux-headers-3.5.0-17-generic. There do appear to be both x86 (32-bit) and x64 options. See if the following works:
sudo apt-get install linux-headers-3.5.0-17-generic
Remember that you will have to learn how to configure/load kernel modules to make this work. It is not a standard user program.
I work off my i: drive
I've downloaded the following mono source file mono-2.11.2.tar.bz2
I've installed the windows version of mono v2.11.2 to "I:\Mono-2.11.2"
I installed cygwin as per the following instructions found on the following webpage http://shana.worldofcoding.com/en/mono_cygwin_tutorial.html
I replaced the "make.exe" with the one from the mono website as per instruction. I had to get one more file "cygintl-2.dll" which resides in cygwin package libintl2/libintl2-0.12.1-3
I added the following my .bashrc file. I had to change "c/Mono-2.11.2/bin" to "i/Mono-2.11.2/bin"
PATH=.:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/cygdrive/i/Mono-2.11.2/bin
PKG_CONFIG_PATH=.:/lib/pkgconfig:/cygdrive/i/Mono-2.11.2/lib/pkgconfig
LD_LIBRARY_PATH=.:/usr/local/lib:/usr/lib:/lib:/cygdrive/i/Mono-2.11.2/lib
export PATH PKG_CONFIG_PATH LD_LIBRARY_PATH
I placed my mono source under the folder specified: /usr/src/mono/
So my dirs looks like:
i:
i:\cygwin\
i:\cygwin\usr\src\mono
i:\cygwin\usr\src\mono\mono
i:\cygwin\usr\src\mono\mcs etc etc
i:\Mono-2.11.2\bin etc
Now the instructions says I must change dirs to /usr/src/mono/mono and run "./autogen.sh --prefix=/usr/local" from the cygwin terminal
However that doesnt work. Running the above command from /usr/src/mono/ works fine.
Now heres the problem. The next instruction is to run "make". However this comes up with :
$ make
make: *** No targets specified and no makefile found. Stop.
I even tried running it from the /usr/src/mono/mono dir. Still no luck.
Can someone please suggest what I should do to be able to build the mono source on windows 7?
Update:
I needed to install the **gnu c++ compiler (g++)**. I just ran the cygwin setup again, searched for g++ and installed that. The autogen.sh ran to completion
The last lines of ./autogen.sh --prefix=/usr/local output should
look like bellow with Now type make to compile at the end. And it
generats Makefile in the same directory.
I think in your case ./autogen.sh failed. You can keep a log file
and check what it is complaining about.
./autogen.sh --prefix=/usr/local 2>&1 | tee autogen.log
More info: http://en.wikipedia.org/wiki/GNU_build_system
The end of the ./autogen.sh ouptut:
config.status: executing quiet-libtool commands
config.status: executing default commands
mcs source: mcs
olive source:
Engine:
GC: sgen and bundled Boehm GC with typed GC and parallel mark
TLS: __thread
SIGALTSTACK: yes
Engine: Building and using the JIT
oprofile: no
BigArrays: no
DTrace: no
LLVM Back End: no (dynamically loaded: no)
Libraries:
Moon Profile: no (boehm)
MonoDroid: no
MonoTouch: no
Mobile: no
JNI support: IKVM Native
libgdiplus: assumed to be installed
zlib: system zlib
Now type `make' to compile