Я пытаюсь следовать инструкциям после установки pnet cdf. После запуска следующего:
cd pnetcdf-1.11.2
./configure --prefix=$HOME/PnetCDF --with-mpi=/usr/bin --enable-netcdf4 --enable-shared --enable-thread-safe
make -j8
make install
PATH=$HOME/PnetCDF/bin:$PATH ; export PATH
я получаю следующее сообщение:
PnetCDF has been successfully installed under
| /home/mmann/PnetCDF
|
| * PnetCDF header files have been installed in
| /home/mmann/PnetCDF/include
| # * PnetCDF library files have been installed in
| # /home/mmann/PnetCDF/lib
| #* PnetCDF utility programs have been installed in
| # /home/mmann/PnetCDF/bin
| *# PnetCDF man pages have been installed in
| # /home/mmann/PnetCDF/share/man
|
| To compile your PnetCDF programs, please add the following to the command
| line, so the compiler can find the PnetCDF header files:
| # -I/home/mmann/PnetCDF/include
|
| Add the following line to link your program to PnetCDF library:
| -L/home/mmann/PnetCDF/lib -lpnetcdf
Как нуб, мне неясно, как добавить эти ссылки.
Я запускаю следующее?
g++ -o sms ./src/sms.o -I/home/mmann/PnetCDF/include
g++ -o sms ./src/sms.o -L/home/mmann/PnetCDF/lib -lpnetcdf
Рискуя тем, чтобы звучать педантичными, Вы не связываете заголовочные файлы - Вы включаете заголовочные файлы и библиотеки ссылок.
Если sms
исполняемая программа, которая состоит из единственной единицы перевода, исходный код которой содержится в файле sms.cpp
, затем можно выполнить оба шага (компиляция и связь) в единственной команде
g++ -o sms -I/home/mmann/PnetCDF/include ./src/sms.cpp -L/home/mmann/PnetCDF/lib -lpnetcdf
Если программа разделяется по многим исходным файлам затем, распространено разделить сборку на отдельную компиляцию и фазы ссылки, как
g++ -o sms.o -I/home/mmann/PnetCDF/include -c ./src/sms.cpp
g++ -o some.o -I/home/mmann/PnetCDF/include -c ./src/some.cpp
g++ -o other.o -I/home/mmann/PnetCDF/include -c ./src/sms.other
и затем
g++ -o sms sms.o some.o other.o -L/home/mmann/PnetCDF/lib -lpnetcdf
Основное преимущество выполнения этого состоит в том, что при внесении изменения в один из исходных файлов Вы не должны перекомпилировать всех другие (просто перекомпилировали измененный и повторно связывают исполняемый файл).