МОЯ ЦЕЛЬ: для компиляции библиотеки stati c (обычно расширение .a) и скрытия внутренних символов (имена функций и переменных) при открытии файла библиотеки в текстовом редакторе.
В настоящее время я работаю на компиляторе XC32 компании Microchip Technology, который делает хорошо известные микроконтроллеры PI C.
На самом деле я не могу поделиться здесь своей библиотекой, но я создал очень простой сделать тесты. C только исходный код:
int variable;
int sum (int a, int b)
{
return a+b;
}
и только заголовок:
int sum (int a, int b);
Создан проект библиотеки в IDE mplabX и выбран компилятор XC32. В свойствах проекта отображаются следующие параметры:
Я изменил эти параметры:
- xc32-as -> Иметь символы в производственной сборке. снят с отметки
- xc32-g cc -> Наличие символов в производственной сборке. снимите флажок
- xc32-ld -> Символы и макросы -> Символы. Выбранный параметр «удалить всю информацию о символах»
Затем скомпилирован. Библиотека (расширение .a) создана. Я открыл его с помощью текстового редактора и увидел, что символы еще отображаются:
![enter image description here](https://i.stack.imgur.com/eq8K3.png)
Для каждого из разделов компилятора (xc32-as, xc32 -g cc, xc32-ld et c), есть поле «Дополнительные параметры».
Я пытался ввести эти параметры, но никто не работал, чтобы скрыть символы:
- -видимость = скрыто на г cc и ld
- -видимость = скрыто на g cc и strip -r -S -x на ld
Если I , попробуйте strip -r -S -x на г cc Я получаю:
Затем я удалил дополнительные параметры для ld и g cc, поместив "stati *" 1098 * "перед переменной и функцией, а C источник становится:
static int variable;
static int sum (int a, int b)
{
return a+b;
}
При этом (добавляя stati c перед всеми), символ S правильно скрыты. Но с другой стороны, я не могу использовать библиотеку, прикрепленную к моему проекту приложения, потому что, когда компилятор показывает «неопределенную ссылку» на функции библиотеки. Это связано с тем, что: [из Википедии] В языке программирования C stati c используется с глобальными переменными и функциями для установки их области видимости в содержащем файле.
Тогда как мне достичь своей цели? в этом случае? (первая фраза топи c). С уважением.
РЕДАКТИРОВАТЬ: Это показано в свойствах проекта в IDE, я компилирую его.
![enter image description here](https://i.stack.imgur.com/QH85A.png)
Все внутренние символы отображаются в нижней части файла lib, где указано имя файла c, только в этом месте отображается c имя файла