xcode не создает статические библиотеки должным образом (в них нет функций) - PullRequest
1 голос
/ 25 июля 2011

В основном я могу создать и скомпилировать статическую библиотеку в xcode4, но otool не читает функции.Мне удалось сделать это один раз , чтобы оно работало, но каждый раз с тех пор это не удавалось, так что я знаю, что я упускаю очевидный шаг.

В настоящее время я создаюновое приложение на основе представления в xcode4, затем я добавляю новую цель (Numbers), в Numbers я добавляю исходный файл с именем File.c и его содержимое:

static int Get10()
{
    return 10;
}

Затем я компилирую его (убедившись, что яя выбрал Numbers | iPhone 4.3 Simulator в раскрывающейся схеме сборки).

Но когда я запускаю otool -S на libNumbers.a, я не получаю результатов:

размер ranlibструктуры: 0 (число 0) строковый индекс объекта смещение

Я знаю, что там должны быть какие-то вещи, потому что, если я запускаю otool -S на правильно построенных libNumbers.a, я получаю некоторые числа вместо 0s:

размер структур ranlib: 16 (число 2) индекс строки смещения объекта 136 0 136 7

Я действительно не знаю, что именно я делаю неправильно,Я попытался отследить, что я сделал с успешной компиляцией libЯ сделал, но не нашел ничего, что указывало бы на то, почему функции скомпилированы с этим, а не с этими.

1 Ответ

3 голосов
/ 25 июля 2011

Не используйте static, если вы хотите использовать функцию вне единицы перевода, в которой она определена. Вместо этого вы хотите использовать внешнюю связь для функции, просто пропустив часть static (внешняя связь используется по умолчаниюдля функций).

...