это не проблема R.
с помощью gdal, у меня есть это:
gdalinfo --debug on H14_2011010400.grib
GRIB: Undefined parameter table (center 98-0 table 228).
GRIB: Undefined parameter table (center 98-0 table 228).
GRIB: Undefined parameter table (center 98-0 table 228).
GRIB: Undefined parameter table (center 98-0 table 228).
GRIB: Problems with ReadGrib1Record called by ReadGrib2Record
Inside ReadGrib1Record
GRIB1 GDS: Expect PV = 255 != 33
ERROR 4: H14_2011010400.grib is a grib file, but no raster dataset was successfully identified.
gdalinfo failed - unable to open 'H14_2011010400.grib'.
Я думаю, что ваш файл grib неправильно закодирован, попробуйте установить wgrib для получения больше информации.
GNU ld
может сделать это на платформах ELF.
Вот то, как сделать это со сценарием версии компоновщика:
/* foo.c */
int foo() { return 42; }
int bar() { return foo() + 1; }
int baz() { return bar() - 1; }
gcc -fPIC -shared -o libfoo.so foo.c && nm -D libfoo.so | grep ' T '
По умолчанию, все символы экспортируются:
0000000000000718 T _fini
00000000000005b8 T _init
00000000000006b7 T bar
00000000000006c9 T baz
00000000000006ac T foo
Скажем, Вы хотите экспортировать [только 116] и baz()
. Создайте "сценарий версии" libfoo.version
:
FOO {
global: bar; baz; # explicitly list symbols to be exported
local: *; # hide everything else
};
Передача это компоновщику:
gcc -fPIC -shared -o libfoo.so foo.c -Wl,--version-script=libfoo.version
Наблюдают экспортируемые символы:
nm -D libfoo.so | grep ' T '
00000000000005f7 T bar
0000000000000609 T baz
Я думаю самый легкий способ сделать, который добавляет -fvisibility=hidden
к gcc опциям, и явно обнародуйте видимость некоторых символов в коде (__attribute__((visibility("default")))
). См. документацию здесь .
может быть способ выполнить это ld сценариями компоновщика, но я не знаю много об этом.
Код, созданный для вызова любых экспортируемых функций или использования любых экспортируемых глобальных переменных, менее эффективен, чем те, которые не экспортируются. Здесь задействован дополнительный уровень косвенности. Это относится к любой функции, которая может быть экспортирована во время компиляции . gcc по-прежнему будет производить дополнительное косвенное обращение к функции, которая позже не экспортируется скриптом компоновщика. Таким образом, использование атрибута видимости даст лучший код, чем сценарий компоновщика.