Google around until static vs. dynamic compilation and the various tradeoffs make sense. I don't hate this resource https://www.geeksforgeeks.org/static-vs-dynamic-libraries/.
- What is static compilation?
- What is dynamic compilation?
- How does dynamic vs static compilation effect the portability of code? How about the size/detectability?
- What are the pros and cons of static vs dynamic, especially as an APT?
Get sniffex.c to statically compile for 32 bit Linux and run locally.
- What did you have to do to get that to work? Submit the compilation command.
Run srings, ldd, readelf, strace on the file
- What do you find? What was the difference between static and dynamic?
Run this version of sniffex on another Linux box with the same architecture if you have one lying around. If it didn't work, troubleshoot. A lot. Also, post something in Slack so we an troubleshoot together.
- What happened? Why?
It should have worked. But, honestly, there are plenty of reasons that static compilation could have failed here. It's a ridiculously complicated problem that only gets more confusing as complexity increases.