RRR
RRR

Reputation: 4175

Compiling Linux Buildroot overrides local changes

I am working to enable the kexec support in my propriety Linux distribution and I would like to debug the kexec tools in user space. I am adding debug prints in the kexec.c that's located in buildroot/output/build/kexec-2.0.15/kexec/kexec.c, but if I do an incremental build with make, it doesn't look like the kexec binary has been updated. If I rebuild everything from scratch with make all, the source code kexec.c has been overridden and I don't see my changes. My guess is that every full build re-extracts the kexec package and that is why my changes are not taking affect.

How do I solve this issue?

Upvotes: 1

Views: 342

Answers (2)

Luca Ceresoli
Luca Ceresoli

Reputation: 1661

If you only want to restart the build process of a package from its compilation step, you can run make <package>-rebuild [...]. It will restart the compilation and installation of the package, but not from scratch: it basically re-executes make and make install inside the package, so it will only rebuild files that changed.

[...]

Internally, Buildroot creates so-called stamp files to keep track of which build steps have been completed for each package. They are stored in the package build directory, output/build/-/ and are named .stamp_. The commands detailed above simply manipulate these stamp files to force Buildroot to restart a specific set of steps of a package build process.

(from the Buildroot manual, section Understanding how to rebuild packages -- I suggest you read the whole section)

Also, look at your build log. If you don't see a line like

>>> kexec 2.0.16 Building

then the kecxec package hasn't been (re)built.

Upvotes: 0

user2699113
user2699113

Reputation: 4509

Try to use "make kexec-rebuild".

Upvotes: 4

Related Questions