Подтвердить что ты не робот

Как открыть файл .a

У меня небольшая проблема: мне нужно открыть файл компоновщика с расширением .a. Я использую Dev-С++.

4b9b3361

Ответ 1

.a файлы являются ar архивами (например, zip-архивами) файлов объектов (.o). Вы можете перечислить файлы в файле .a с помощью программы ar:

ar t file.a

И извлеките все файлы:

ar x file.a

Ответ 2

Файлы с расширением .a являются статическими библиотеками, использующими соглашения об именах файлов Unix. Они не намного больше, чем индексированная коллекция объектного кода. Вы не так много открываете их (если у вас нет такого инструмента, как nm или gdb, оба из которых могут делать разумные вещи с библиотекой, если не обязательно то, что вам может понадобиться), как говорят компоновщику использовать их при соединении. С большинством компоновщиков важно поместить все библиотеки (как статические, так и динамические/общие) после вашего основного программного кода в командной строке компоновщика, а также порядок библиотек.

Ответ 3

Вы действительно имеете в виду, что хотите открыть файл или, скорее, хотите связать его с вашим кодом?

Dev-С++ по умолчанию устанавливается вместе с компилятором MinGW/GCC. Если архив специально не создан для работы с MinGW (например, это может быть архив Cygwin или Linux), вы не сможете связать его с созданным кодом MinGW.

Если архив является совместимой с MinGW/GCC библиотекой, вы просто связываете его с вашим кодом. В Dev-С++ вам нужно добавить архив в параметры компоновщика проекта, добавив полный путь к архиву (там есть кнопка для этого в параметрах проекта) или путем размещения архива в пути, определяемом -L<path>, а затем добавив параметр -l<archive>. Обратите внимание, что id-архив называется libXXX.a, тогда опция -l<archive> будет `-lXXX '; префикс "lib" и расширение ".a" неявные.

Если вы просто хотите проверить архив, чтобы определить, какие внешние символы он предоставляет, то для этого можно использовать утилиту nm, Если вы хотите извлечь отдельные файлы объектов, используйте ar, хотя я не могу придумать, почему вы хотите сделать это.

Ответ 4

Попробуйте fstream или fstream file_op("c:\\test.a",ios::in);, и не забудьте включить fstream.h.