GCC / Linux: добавление статической библиотеки к .so?

size_t является типом, используемым для представления размеров (поскольку его имена подразумевают). Его платформа (и даже потенциально реализация) зависимый, и должна использоваться только с этой целью. Очевидно, представляя размер, size_t не подписан. Много функций stdlib, включая malloc, sizeof и различные функции строковой операции используют size_t в качестве типа данных.

интервал подписывается по умолчанию, и даже при том, что его размер является также иждивенцем платформы, это будут закрепленные 32 бита на самой современной машине (и хотя size_t составляет 64 бита на архитектуре на 64 бита, интервал остаются 32 бита длиной на той архитектуре).

Для суммирования: используйте size_t для представления размера объекта и интервала (или долго) в других случаях.

6
задан Myles Gray 25 February 2011 в 10:51
поделиться

2 ответа

Немного погуглив, вы получите следующий результат из викибуков :

set argC=0
for %%x in (%*) do Set /A argC+=1

echo %argC%

Похоже, cmd.exe немного изменился по сравнению со старыми временами DOS :)

Другими словами, вещи могут показаться работать так, как их описал Ник, затем вы добавляете разделяемую библиотеку в строку ссылок a.out , и они больше не работают таким образом.

На платформах ELF (таких как Linux) у вас есть большой контроль над видимостью и привязкой символов. См. Описание -fvisibility = hidden и -rdynamic на странице руководства GCC , а также -Bsymbolic на странице руководства компоновщика.

] У большинства других платформ UNIX есть способ управления привязкой символов, но он обязательно зависит от платформы.

у вас есть большой контроль над видимостью и привязкой символов. См. Описание -fvisibility = hidden и -rdynamic на странице руководства GCC , а также -Bsymbolic на странице руководства компоновщика.

] У большинства других платформ UNIX есть способ управления привязкой символов, но он обязательно зависит от платформы.

у вас есть большой контроль над видимостью и привязкой символов. См. Описание -fvisibility = hidden и -rdynamic на странице руководства GCC , а также -Bsymbolic на странице руководства компоновщика.

] У большинства других платформ UNIX есть способ управления привязкой символов, но он обязательно зависит от платформы.

6
ответ дан 17 December 2019 в 00:12
поделиться

Если ваша основная программа и динамическая библиотека статически связаны с helper.a, вам не нужно беспокоиться о смешивании версий helper.a (если вы не делаете такие вещи, как указатели передачи, выделенные в helper.a между границы .exe и .so).

Код, требуемый от helper.a, вставляется в фактический двоичный файл, когда вы связываете его. Поэтому, когда вы вызываете helper.a из .exe, вы будете выполнять код из сегмента кода вашего исполняемого образа, а когда вы вызываете helper.a из .so, вы будете выполнять код из части адресное пространство, в которое был загружен .so. Даже если вы вызываете ту же функцию внутри helper.a, вы

1
ответ дан 17 December 2019 в 00:12
поделиться
Другие вопросы по тегам:

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