Как статически связывать программу netcdf в ubuntu

Я пытаюсь статически связать очень простую программу, используя библиотеку netcdf и g ++. Программа выглядит так:

#include "netcdf.h" int main(void) { int ncid, ok; ok=nc_create("testing.nc", NC_NOCLOBBER, &ncid); ok=nc_close(ncid); return(0); } 

И отлично работает, если я скомпилирую его так:

 > g++ test.cpp -lnetcdf 

Однако, если я пытаюсь статично компилировать его, тогда все ломается:

 > g++ -static test.cpp -lnetcdf /usr/lib64/libnetcdf.a(nc4file.o): In function `sync_netcdf4_file': (.text+0x5a): undefined reference to `H5Fflush' /usr/lib64/libnetcdf.a(nc4file.o): In function `close_netcdf4_file': (.text+0x11b): undefined reference to `H5Fclose' /usr/lib64/libnetcdf.a(nc4file.o): In function `get_netcdf_type': (.text+0x18b): undefined reference to `H5Tget_class' /usr/lib64/libnetcdf.a(nc4file.o): In function `get_netcdf_type': (.text+0x1e9): undefined reference to `H5Tis_variable_str' (...) 

Многие жалуются, но первые для hdf5. В поисках ответа я нашел эту страницу в unidata, которая объясняет, что нужно связываться с hdf5 и другими библиотеками. Поэтому я попробовал:

 > g++ -static test.cpp -lnetcdf -lhdf5_hl -lhdf5 -lz -lm /usr/lib64/libnetcdf.a(liboc_la-ocinternal.o): In function `ocinitialize': (.text+0x17e): undefined reference to `curl_version_info' /usr/lib64/libnetcdf.a(liboc_la-http.o): In function `ocsetcurlproperties': (.text+0xc8): undefined reference to `curl_easy_strerror' (...) /usr/lib64/libhdf5.a(H5.o): In function `H5_term_library': (.text+0x383): undefined reference to `pthread_once' /usr/lib64/libhdf5.a(H5.o): In function `H5dont_atexit': (.text+0x11ac): undefined reference to `pthread_once' (...) 

Меньше жалуется, а первые из libcurl ?? И затем hdf5 хвастается о pthread. Поэтому я использовал package_config, чтобы выяснить все зависимости:

 > pkg-config netcdf --libs --static -lnetcdf > pkg-config libcurl --libs --static -lcurl -lidn -llber -lldap -lrt -lgssapi_krb5 -lssl -lcrypto -lz 

И, наконец, попробовал:

 > g++ -pthread -static testing.cpp -lnetcdf -lhdf5_hl -lhdf5 -lz -lm \ -lcurl -lidn -llber -lldap -lrt -lgssapi_krb5 -lssl -lcrypto -lz /usr/bin/ld: cannot find -lgssapi_krb5 /usr/lib64/libldap.a(os-ip.o): In function `ldap_pvt_is_socket_ready': (...) 

Который все еще жалуется на то, что не нашел gssapi_krb5 … Теперь я застреваю, потому что после установки libgssapi-krb5-2 единственное, что я получил, это общие библиотеки !!

Кто-нибудь знает, как статические ссылки netcdf-программы?

Это должно быть проще, чем это! Это программа с 3 строками кода, и у меня есть статические библиотеки netcdf … Если они уже статичны, почему мне нужно что-то еще?

Кстати, я использую Ubuntu Natty 11.04 на 64-битной машине Intel, а netcdf и hdf5 установлены из репозитория Ubuntu:

 > dpkg --get-selections | grep netcdf libnetcdf-dev install libnetcdf6 install netcdf-bin install netcdf-dbg install > dpkg --get-selections | grep hdf hdf4-tools install hdf5-tools install hdfview install libhdf4-0 install libhdf5-serial-1.8.4 install libhdf5-serial-dev install libjhdf4-java install libjhdf4-jni install libjhdf5-java install libjhdf5-jni install