Вопрос

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

Это было полезно?

Решение

.a Файлы есть ar Архивы (что-то вроде Zip Archives) объекта (.o) файлы. Вы можете перечислить файлы в .a Файл с использованием ar Программа:

ar t file.a

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

ar x file.a

Другие советы

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

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

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

Если архив является совместимой библиотекой MingW / GCC, вы просто связываете об этом в свой код. В Dev-C ++ вам необходимо добавить архив к параметрам компоновщика проекта, либо путем добавления полного пути к архиву (есть кнопка для этого в параметрах проекта), либо путем размещения архива в пути, определенным -L<path> опция, а затем добавление -l<archive> вариант. Обратите внимание, что идентификатор архива называется libxxx.a, то -l<archive> Вариант будет `-lxxx '; Расширение «Lib» Prefix и «.a» неявно.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top