Tag: gcc

Компиляция с -static-libgcc -static-libstdc ++ по-прежнему приводит к динамической зависимости от libc.so

Я пытаюсь сделать исполняемый файл максимально переносимым. После удаления нескольких зависимостей я столкнулся с следующим при запуске двоичного файла в другой системе: /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) Я бы предпочел, чтобы мой двоичный файл не требовал […]

/ usr / bin / ld: не удается найти -lc при компиляции с make-файлом

Сначала контекст: у меня есть заголовок (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 по […]

Зачем использовать #include_next в проекте?

Чтобы процитировать документацию iOS на заголовках Wrapper : #include_next не различает включение и “file”, а также не проверяет, что указанный вами файл имеет то же имя, что и текущий файл. Он просто ищет файл с именем, начиная с каталога в пути поиска после того, где был найден текущий файл. Использование `#include_next ‘может привести к большой […]

g ++ Как получить предупреждение об игнорировании возвращаемого значения функции

lint производит предупреждение: foo.c XXX Warning 534: Ignoring return value of function bar() Из руководства lint 534 Игнорирование возвращаемого значения функции «Символ» (по сравнению с местоположением) Функция, возвращающая значение, вызывается только для побочных эффектов, например, в заявлении самостоятельно или в левой части оператора запятой. Попробуйте: (void) function (); для вызова функции и игнорирования ее возвращаемого […]

Переопределение инструкций GCC по чтению / записи

В примитивах синхронизации Linux (spinlock, mutex, RCU) используются инструкции по защите памяти, чтобы заставить команды доступа к памяти получить повторное упорядочение. И это переупорядочение может выполняться либо самим процессором, либо компилятором. Может ли кто-нибудь показать некоторые примеры кода GCC, где такое переупорядочение сделано? Меня интересует в основном x86. Причина, по которой я задаю это, – […]

Как остановить mingw и msys от измененных имен путей, заданных в командной строке?

В 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 ++: Когда (и как) называются глобальные статические конструкторы C ++?

Я работаю над некоторым кодом на C ++, и я столкнулся с вопросом, который некоторое время подтачивал меня … Предполагая, что я компилирую с GCC на узле Linux для цели ELF, где находятся глобальные статические конструкторы и деструкторы называется? Я слышал, что есть функция _init в crtbegin.o и функция _fini в crtend.o. Вызывается ли их […]

Статическое и динамическое / совместное соединение с MinGW

Я хочу начать с простого использования ссылок, чтобы объяснить мою проблему. Предположим, что существует библиотека 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 […]

длинный двойной (GCC специфический) и __float128

Я ищу подробную информацию о long double и __float128 в GCC / x86 (больше из любопытства, чем из-за реальной проблемы). Немногие люди, возможно, когда-нибудь захотят это (мне просто в первый раз по- настоящему нужен double ), но я думаю, что все же стоит (и интересно) знать, что у вас есть на панели инструментов и что […]

Давайте будем гением компьютера.