Заблокирован
|
|
1 | |
Что такое "position-independent code" (-fPIC in gcc) ?29.07.2015, 11:46. Показов 17316. Ответов 9
Метки нет (Все метки)
What is meant my position-independent code (-fPIC in gcc)? When would you use it? How are EXE and DLL's compiled with this regard in Windows? *
Что такое "position-independent code" ((-fPIC in gcc) ? С чем его едят? Когда нужно его использовать? Как с этой фишкой собираются EXE и DLL под Windows? В чём особенность? Добавлено через 1 час 8 минут Важная тема теряется... Up! Добавлено через 14 секунд Важная тема теряется... Up!
0
|
29.07.2015, 11:46 | |
Ответы с готовыми решениями:
9
Code::Blocks 16.01, wxWidgets 3.0.3, TDM-GCC. Что не так при запуске exe-файла приложения? (+) Code::Blocks 16.01, wxWidgets 3.0.3, TDM-GCC. Что не так при запуске exe-файла полученного приложения? (+) Просветите кто пользовался, что такое Visual Studio Code? Установка gcc на Code::Blocks |
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
|
|
29.07.2015, 15:39 | 2 |
Это ключ для библиотек Линукса, насколько я понял. Windows тут не при чём.
0
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
|
29.07.2015, 15:59 | 4 |
Сообщение было отмечено Butt-Head как решение
Решение
Если кратко.
Без fpic динамическая либа будет грузиться в память каждого процесса, который ее использует. С fpic - все процессы будут разделять одну копию. Это на 32битной. На 64битной без fpic будет ошибка линковки. На 32битной архитектуре статическую либу пофиг как компилить - с fpic или без него. На 64битной - пофиг, если линкуем в бинарник, и не пофиг, если линкуем в динамические либы (тогда fpic обязателен - им включается магия 64битных регистров для смещений).
0
|
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
|
|
29.07.2015, 16:14 | 5 |
Добавлю, что на win весь код position-independent по умолчанию, поэтому -fpic в mingw на самом деле ничего не делает.
0
|
Заблокирован
|
|
29.07.2015, 16:24 [ТС] | 6 |
Да кстати, там же DLL именно для экономии ресурсов и был придуман.
Хмм, тогда получается фраза When would you use it? How are EXE and DLL's compiled with this regard in Windows? с подвохом и собирается всё и так с этим флагом и разницы между DLL-кой и EXE как бы нет ?
0
|
29.07.2015, 16:56 | 8 |
ТС задал вопрос в контексте windows, а потому ему ссылка не будет интересна. Но для linux'оидов может пригодиться Вопросы по динамическим библиотекам
0
|
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
|
|
29.07.2015, 18:51 | 9 |
Сообщение было отмечено Butt-Head как решение
Решение
Я не совсем там верно написал. В windows вообще position-independent code для DLL в том смысле, в котором оно есть в UNIX, не используется.
Адреса внутри Dll строятся относительно предпочтительного базового адреса, т.е. адреса заранее фиксированы. При загрузке Dll, если базовый адрес занят, то система производит перебазирование Dll, в том числе перевычисление каждого абсолютного адреса и изменение кода для осуществления использования новых адресов. После перебазирования библиотека перестает быть разделяемой, т.е. экономии памяти для динамически загружаемых библиотек уже не происходит. Но если базовый адрес не занят, то библиотека может быть использована разделяемо. По этой причине системные библиотеки имеет заранее предвычисленные базовые адреса, чтобы они не пересекались и перебазирование не происходило. Добавлено через 2 минуты Вот нашел небольшую статью в сравнении с Linux so: http://www.symantec.com/connec... s-part-one
2
|
29.07.2015, 20:39 | 10 |
Сообщение было отмечено Butt-Head как решение
Решение
Идиотизм какой-то... Хотя в наш век дешёвой памяти некритично, но как-то выглядит туповато
0
|
29.07.2015, 20:39 | |
29.07.2015, 20:39 | |
Помогаю со студенческими работами здесь
10
GNU GCC Compiler в Code Blocks Проблемы с GCC в Visual Studio Code Учим code::blocks компилировать gcc компилятором Code Blocks компилятор GCC: где найти учебник [РЕШЕНО] Настройка AVR-GCC для Code::Blocks - подскажите. Linux + Code::Blocks IDE + arm-none-eabi-gcc + openocd Что такое файловый буфер? Что такое режим (модификатор) доступа, при работе с файлами? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |