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

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

17
задан Shahbaz 23 July 2013 в 17:09
поделиться

4 ответа

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

ar t file.a

и извлечь все файлы:

ar x file.a
24
ответ дан 30 November 2019 в 12:35
поделиться

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

3
ответ дан 30 November 2019 в 12:35
поделиться

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

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

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

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

2
ответ дан 30 November 2019 в 12:35
поделиться

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

1
ответ дан 30 November 2019 в 12:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: