On Tue, 26 Mar 2019 09:57:52 -0400 Steven Rostedt <rostedt@xxxxxxxxxxx> wrote: > On Tue, 26 Mar 2019 15:35:28 +0200 > "Yordan Karadzhov (VMware)" <y.karadz@xxxxxxxxx> wrote: > > > > I really don't want any build artifacts in the executable. This > > > will mean that you need to do special arrangements to build > > > kernelshark and then move it to another machine. > > > > I am confused. I do not know how we can make possible to build > > kernelshark on one machine and then move it to another machine and > > guarantee that it will work. Note that trace-cmd is not the only > > external dependency. We depend on OpenGL, Qt, .... > > > > Qt itself depends on big number of things. > > > > Is this really doable? > > Yes, I've done it myself several times. > > One only needs the "-dev" packages to build kernelshark. But if you > want to run it, you just need the normal packages. I have those > packages installed on several machines. In fact, I may only want to > build kernelshark on one box, and then copy it to other boxes that > don't have the "-dev" packages. > > There's also a case for cross compiling, where Qt, OpenGL and others > are already installed on those other boxes. > > Package managers will let you know this is done all the time, right > Patrick? ;-) This is pretty much how package managers operate, whenever you "apt-get install" or "dnf install" the package manager is downloading binaries built on a random server and installing them on your machine. As long as the appropriate dependencies are installed (which the package manager takes care of for you), it should just work. Finding the libraries at runtime is generally taken care of by your linker, and there is nothing that really needs to be done in your package. For plugins (and other things that you dlopen()), you need to come up with a way to figure out where to look. Most packages do this with defaults defined at build time (packagers and distro security teams will not like you very much if you hard code looking for dynamic libraries at relative paths from the CWD), and overrides in configuration files.
![]() |