In Linux, adding default include paths for GCC can be done in several ways:
1. Using the -I Option of GCC
When compiling, you can directly add the required include directory using the -I option in the command line. For example, to include the /usr/local/include/mylib directory, specify it in the gcc command as:
bashgcc -I/usr/local/include/mylib main.c -o main
This method is straightforward and suitable for temporary needs of specific include paths.
2. Modifying Environment Variables C_INCLUDE_PATH and CPLUS_INCLUDE_PATH
To set include paths globally, configure the environment variables C_INCLUDE_PATH (for C) and CPLUS_INCLUDE_PATH (for C++). For example, add the following lines to your shell configuration file (such as .bashrc or .bash_profile):
bashexport C_INCLUDE_PATH=/usr/local/include/mylib:$C_INCLUDE_PATH export CPLUS_INCLUDE_PATH=/usr/local/include/mylib:$CPLUS_INCLUDE_PATH
After this setup, whenever you compile C or C++ programs with GCC, /usr/local/include/mylib will be automatically included in the search path.
3. Modifying the GCC Configuration File
The GCC configuration file (typically located at /usr/lib/gcc/{arch}/{version}/specs, where {arch} is the architecture and {version} is the GCC version) can be modified to permanently add include paths. Although this method is somewhat complex and generally not recommended for beginners, it provides include paths for all users and projects.
First, use the following command to view the current configuration:
bashgcc -dumpspecs > ~/original.specs
Then, edit the original.specs file, locate the line *cpp:, and add -I/usr/local/include/mylib after it.
Finally, use the modified specs file to compile your program:
bashgcc -specs=~/original.specs main.c -o main
Summary
Depending on the required flexibility and persistence, choose the appropriate method to add default include paths for GCC. It is generally recommended to use the environment variable method, as it does not require entering additional parameters each time you compile and does not necessitate modifying the internal GCC configuration files.