Я пытаюсь сделать исполняемый файл максимально переносимым. После удаления нескольких зависимостей я столкнулся с следующим при запуске двоичного файла в другой системе: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.15′ not found (required by foob) /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.15′ not found (required by foob) /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14′ not found (required by foob) Я бы предпочел, чтобы мой двоичный файл не требовал […]
Сначала контекст: у меня есть заголовок (event.h), программа под названием event.c и основная программа main.c. Эта программа будет скомпилирована, создавая сначала объектную программу (event.o), затем статическую библиотеку (libevent.a) в отдельной папке, а затем исполняемую программу work1.exe Для этого я создал этот make-файл: work1 : main.c libevent.a gcc -static main.c -L./lib -levent -o work1 -Wall event.o: […]
Мне нужно получить начальный и конечный адрес текстового раздела исполняемого файла. Как я могу его получить? Я могу получить начальный адрес от символа _init или символа _start , но как насчет _start адреса? Должен ли я считать конечный адрес text раздела последним адресом перед началом раздела .rodata ? Или я должен отредактировать сценарий ld по […]
Чтобы процитировать документацию iOS на заголовках Wrapper : #include_next не различает включение и “file”, а также не проверяет, что указанный вами файл имеет то же имя, что и текущий файл. Он просто ищет файл с именем, начиная с каталога в пути поиска после того, где был найден текущий файл. Использование `#include_next ‘может привести к большой […]
lint производит предупреждение: foo.c XXX Warning 534: Ignoring return value of function bar() Из руководства lint 534 Игнорирование возвращаемого значения функции «Символ» (по сравнению с местоположением) Функция, возвращающая значение, вызывается только для побочных эффектов, например, в заявлении самостоятельно или в левой части оператора запятой. Попробуйте: (void) function (); для вызова функции и игнорирования ее возвращаемого […]
В примитивах синхронизации Linux (spinlock, mutex, RCU) используются инструкции по защите памяти, чтобы заставить команды доступа к памяти получить повторное упорядочение. И это переупорядочение может выполняться либо самим процессором, либо компилятором. Может ли кто-нибудь показать некоторые примеры кода GCC, где такое переупорядочение сделано? Меня интересует в основном x86. Причина, по которой я задаю это, – […]
В Windows я выполняю кросс-компиляцию программы для ARM / linux с использованием набора кросс-компиляторов CodeSourcery. Я использую mingw msys в качестве моего интерпретатора команд, и очень часто он будет искажать мои пути и пути. Например, чтобы создать мою программу, я вызываю arm-none-linux-gnueabi-gcc.exe -Wall -g \ -Wl,–dynamic-linker=/usr/lib/myrpath/ld-linux.so.3 \ -Wl,-rpath=/usr/lib/myrpath \ -I../targetsysroot/usr/include \ myprogram.c -o myprogram Конечно, […]
Я работаю над некоторым кодом на C ++, и я столкнулся с вопросом, который некоторое время подтачивал меня … Предполагая, что я компилирую с GCC на узле Linux для цели ELF, где находятся глобальные статические конструкторы и деструкторы называется? Я слышал, что есть функция _init в crtbegin.o и функция _fini в crtend.o. Вызывается ли их […]
Я хочу начать с простого использования ссылок, чтобы объяснить мою проблему. Предположим, что существует библиотека z которая может быть скомпилирована в общую библиотеку libz.dll (D: /libs/z/shared/libz.dll) или в статическую библиотеку libz.a (D: / libs / z / static / libz .а). Позвольте мне привязаться к нему, тогда я делаю это: gcc -o main.exe main.o -LD:/libs/z/static […]
Я ищу подробную информацию о long double и __float128 в GCC / x86 (больше из любопытства, чем из-за реальной проблемы). Немногие люди, возможно, когда-нибудь захотят это (мне просто в первый раз по- настоящему нужен double ), но я думаю, что все же стоит (и интересно) знать, что у вас есть на панели инструментов и что […]