Welcome to the Linux Foundation Forum!

Not able to compile stress-ng

I download stress-ng from source (git)
i then download make from source (git)

i go into stress-ng directory
i type "make"
and this is the following message:

core-net.c: In function ‘stress_set_sockaddr’:
core-net.c:144:29: error: storage size of ‘addr’ isn’t known
static struct sockaddr_un addr;
core-net.c:144:29: warning: unused variable ‘addr’ [-Wunused-variable]
make: *** [Makefile:368: core-net.o] Error 1

i go into the file core-net to see what is there but it is C, which i do not know therefore i cant analyze the code and see how to change it in order to set a value to the variable 'addr' (atleast this is the solution i believe.



  • and now i got this:
    stress-ng.o: In function main': stress-ng.c:(.text.startup+0x6dc): undefined reference to__stop_mlocked_data'
    stress-ng.c:(.text.startup+0x6e1): undefined reference to `__start_mlocked_data'
    collect2: error: ld returned 1 exit status
    make[1]: *** [Makefile:372: stress-ng] Error 1
    make[1]: Leaving directory '/home/ec2-user/stress-ng'
    make: *** [Makefile:352: all] Error 2

  • coop
    coop Posts: 913

    Not enough information here. What distribution and version? Most distros have stress-ng in the packaging system now. For example, for CentOS/RHEL 8 it is in the "epel" repo. For Ubuntu 20.04 it is in the system (and probably earlier Ubuntu) so you can just do something like:

    sudo apt-get install stress-ng
    sudo dnf install stress-ng

    As for make it makes no sense to install make from source as you would probably need make to make make :) And every distribution under the sun has make available. So just do dnf/apt-get install make etc. (Installing a new version of make that is out of sync with the distribution version is generally a bad idea as it is so central, and it is likely to lead to hard to track problems)

  • As the author and maintainer of stress-ng I am interested to know what distribution + version you are using so I can address this build issue. Normally you need the standard linux headers and stress-ng should autodetect the available libraries/headers and features at build time. For some reason your system does not have the networking headers installed, which is going to be problematic.

  • coop
    coop Posts: 913

    BTW, thanks for a great program, much stronger than stress! At the LF we use it in many different courses, from relatively low-level material (like here) to performance tuning, kernel development etc, as one can do many things with one Swiss army knife rather than have to construct or write code each time.

    As far as distributions go, Carlos never answered, but he also did not know "C" so he might have gotten caught up with missing libs etc, and I suspect he was trying to compile and install on a distribution that already has it in its packaging system. The scripts we have that prepare virtual machines or student machines for the course has stress-ng in the list of packages required, and it works flawlessly on RHEL and variants (CentOS, Fedora), Debian and variants (Ubuntu) and openSUSE. I'm sure it also is in the packaging system on Aarchlinux and gentoo which we don't really support but test on.

    My guess is Carlos went and used apt-get or dnf or yum or zypper and got it working so he never answered :)

    Thanks again!



Upcoming Training