Wow, this is probably way beyond most people's hacking abilities here. And you are stretching mine. But let's start the banter and see if we can't get closer to an answer: Most programming languages try to simplify things by grouping like items together.
Sometimes is works (C) and sometimes it gets out of hand (Cobal). A header file (in most languages) groups the descriptions of variables, functions and constants together. You are essentially telling everyone (compiler included) how you intend to use these things.
This is especially important when writing bits and pieces of code you intend for others to use in their programs. That is, when you write a LIBRARY of programs. Many many other programs will use common library files.
The thought; this will cut down on the average program size. The problem; keeping everyone up to date on how to interface with the library and (as you have found out) where that library is. So, if you suffer a "disconnect" - that is to say your program can not find a library and you have verified that library is available to it - you might consider either your program or your library is not up-to-date.
That they might be incompatible. Usually programmers either say what version of a library their programs will work with or their programs check for them selves. If not, you might google around for an answer.
But, as it sounds like in this case, you believe your program and libraries are compatible, you can go about fixing the problem in a number of ways. You can try, as you said, a link (go to where you want the header file to appear and "ln -s path_to_current_header_file_location"). You can copy the header file to the new location.
You can try to set an environmental variable to search for the header file in it's current location. You can try and see if there was an option you could have set to tell your program where the libraries were back when you compiled it. That last one can be tricky to explain.It really depends on if the program's author created all the necessary compiler scripts so that people could build his/her program locally.
And, to add confusion, there are several commonly accepted ways of doing this. All of which could stretch this explanation a great deal. The second to the last is also tricky to explain.
How you do it depends on several things (the shell you are running in and if the programs looks for and accept the convention that such a variable will have a default name like LIBRARYPATH). Also consider that there may be dozen of header files and that they are, as far as your program is concerned, all in the wrong place. If this is the case, I would try setting the LIBRARYPATH to see if it fixes the problem.
If you want to go about this a bit more rigorously, check your program to see if how it is finding it's libraries. Sometimes this is set up in the make file so when you compile your program the path is embedded. That is, if you are using a make file to control the compiling of your program.
In the end, there is always more then one way to do this. Start with the obvious (is everything up to date or at least compatible?). Then try to figure out a global solution (compiler time setting or environmental variables).
Finally resort to brute force solutions like moving, copying or linking files. Also remember you are working on a small embedded system which you will undoubtedly reboot often. So, keep in mind if you go setting variables up - they might not survive a reboot - that you will need to set up some sort of script that re-sets these variable before running your program.
Most people call this a wrapper and set the variables in the wrapper script/program which then calls the real program which should inherit the variables. -good luck.
I cant really gove you an answer,but what I can give you is a way to a solution, that is you have to find the anglde that you relate to or peaks your interest. A good paper is one that people get drawn into because it reaches them ln some way.As for me WW11 to me, I think of the holocaust and the effect it had on the survivors, their families and those who stood by and did nothing until it was too late.