| 22 | === Shared libraries === |
| 23 | Your application can use shared libraries (.so). |
| 24 | Include these as separate files. |
| 25 | They will reside in your project's directory on the client host. |
| 26 | The BOINC client appends the project directory to LD_LIBRARY_PATH, |
| 27 | so your program will find them and run correctly. |
| 28 | |
| 29 | A problem may arise if you support multiple platforms |
| 30 | (say, Linux32 and Linux64). |
| 31 | You need different versions of the shared library for each platform. |
| 32 | These libraries must have distinct physical names - say, libfoo_1.1_linux32.so |
| 33 | and libfoo_1.1_linux64.so. |
| 34 | |
| 35 | But what if there are multiple shared libraries, and some depend on others? |
| 36 | It may be difficult to edit all the Makefiles to use distinct names. |
| 37 | Here's what you can do to solve this problem: |
| 38 | |
| 39 | * Give each shared library a name of the form PHYSICAL=LOGICAL, and mark it as <link_file/>. This will cause the BOINC client to create a symbolic link (with the logical name) to the file in the project directory. |
| 40 | * Mark the application as <local_libs>. This will cause the BOINC client to add "." (i.e. the slot directory) to its LD_LIBRARY_PATH. |
| 41 | === Stack size === |