Компоновщик является частью цепочки инструментов для создания исполняемых файлов из исходного кода, написанного на скомпилированных языках программирования. Он принимает скомпилированный объектный код в нескольких файлах и создает из них один «связанный» исполняемый файл.
Итак, я обнаружил действительно странное поведение в CMake, создающее зависимость от target_link_library .. Это сложно объяснить одним предложением, поэтому вот список требований (я надеюсь, что все это в конечном итоге будет иметь смысл)
ваш проект должен иметь настраиваемый тип сборки, определенны....
Итак, у меня проблема, когда я пытаюсь использовать любой из статических членов библиотеки SFML, например sf::RenderState::Default или sf::Color::Blue.
Ошибка LNK2001: неразрешенный внешний символ «public: static class sf :: RenderStates const sf :: RenderStates :: Default» (? Default @ RenderStates....
26 Фев 2021 в 15:09
Я хочу подключить свою общую библиотеку к другому двоичному файлу программы, и функция подключения выглядит так:
void my_function(void *data){
bool res = my_function_needed(data);
if (res){
// Do my work
}
else {
original_function(data);
}
}
Подключаемая функция ....
26 Фев 2021 в 01:39
Допустим, у меня есть foo.a с
a.o
T aaa
U bbb
b.o
T bbb
Как я могу изменить foo.a или создать перемещаемый foo.o так, чтобы, когда он связан в другом проекте, a.o:bbb использовал b.o:bbb вместо bbb, который мог бы быть определенным в другом месте? Обратите внимание, что я не могу использов....
25 Фев 2021 в 00:06
Вот результат readelf -a test.elf Заголовки раздела: [Nr] Имя Тип Адрес Выкл Размер ES Flg Lk Inf Al [0] NULL .......
Я пытаюсь создать свой первый проект CMake, и он терпит неудачу в исполняемом файле CXX NeuralNetLibrary. При сборке я получаю неопределенную ссылку на ошибку FFLayer :: test (). Полный проект находится здесь https: // .......
У нас есть классы A, B и C, всем из которых требуется доступ к статической переменной staticVariable в классе D.
Более того, у класса A должен быть экземпляр классов B и C, например:
class A{
public:
B instanceB;
C instanceC;
};
Класс D содержит статическую переменную типа объек....
16 Фев 2021 в 16:10
1
Rust, как использовать глобальную переменную из DLL? Эквивалент C ++ требует __declspec (dllimport)
Изменить: после некоторых исследований я нашел частичное решение. Атрибут link_name можно использовать для изменения имени, связанного с внешней переменной. У меня вопрос, может ли этот атрибут автоматически применяться bindgen для устранения ошибок связывания. Контекст:Я пытаюсь заставить св....
A.so предоставляется третьей стороной B.so зависит от A.so, но в make-файл, B.so не связан с A.so (ни динамически, ни статически). C - это тестовый исполняемый файл для библиотеки B. в makefile, C динамически связан с B и A. ldd B.so НЕТ ЗАВИСИМОСТИ ОТ А., что и ожидается ldd C зависимость от....
11 Фев 2021 в 21:39
У меня есть файл .elf, связанный с несколькими файлами .a, .so и .lib. Теперь я хочу добавить еще один .lib к тому же эльфу. Есть ли способ добиться этого?....
10 Фев 2021 в 16:28
Я пытаюсь написать свою собственную общую библиотеку для связывания с исполняемым файлом, но не могу заставить .so связываться.
Я использую очень простой пример, чтобы попытаться заставить его работать. Общая библиотека (test_lib.c):
#include "test_lib.h" //stdlib includes and function prototype
c....
10 Фев 2021 в 14:56
У меня вопрос относительно безопасности и целостности моего приложения, когда дело касается динамического связывания. Я хотел бы отправить своему клиенту приложение вместе с libcrypto.so, которое выполняет некоторую проверку подписи некоторых токенов JWT. В идеале я бы хотел, чтобы мой клиент не «....
Так вот, я пишу приложение на C ++ для получения данных из сокета и сохранения их в базе данных MariaDB.
Я включил библиотеку c коннектора MariaDB из пакета libmariadb3, и она работала без проблем.
При компиляции программы мне пришлось добавить опцию связывания -l mysqlclient.
Команда компиляции буд....
9 Фев 2021 в 12:49
В Visual Studio, когда я хочу использовать существующий проект в своем решении, я могу либо добавить его в качестве ссылки, либо добавить его как статически связанную библиотеку в других свойствах проекта. Я не понимаю, когда мне следует использовать с опцией, и какие преимущества имеют эти два под....
8 Фев 2021 в 13:03
Кажется, что невозможно создать общую библиотеку из перемещаемых объектов со ссылками на R_X86_64_PC32, и я не понимаю почему.
Эти ссылки относятся к IP и поэтому не зависят от позиции. Так почему же я сказал мне, что это не тот случай, и я должен использовать -fPIC, который генерирует ссылку GOT?
....
6 Фев 2021 в 21:16
Компоновщик может выводить как файл ELF, так и файл MAP. Эти файлы особенно актуальны в мире встроенных систем, потому что файл ELF обычно используется для считывания адресов переменных или функций. Кроме того, файл ELF используется различными встроенными инструментами измерения или анализа.
Когда....
Предположим, этот код C, скомпилированный с помощью gcc file.c:
int main(){
return 0;
}
Сгенерированный вывод с помощью objdump:
0000000000000660 <main>:
660: 55 push %rbp
661: 48 89 e5 mov %rsp,%rbp
664: b8 00 00 00 00 mov $0x0,%eax
66....
Предположим этот простой код:
int main(){return 0;}
Используя objdump, мы можем увидеть адреса памяти:
0000000100003fa0 _main:
100003fa0: 55 pushq %rbp
100003fa1: 48 89 e5 movq %rsp, %rbp
100003fa4: 31 c0 xorl %eax, %eax
1....
31 Янв 2021 в 23:11
Я действительно попытался найти свою конкретную проблему, но ближе всего, что я нашел, был этот вопрос, где проблема связана с глобальными переменными.
Мне нужно создать файл заголовка лексера вместе с файлом cpp для использования в main.cpp. вот два файла лексера:
// lexer.hpp
#ifndef LEXER_HPP
....
Я заметил, что с gcc (но не clang), const (только для чтения) инициализированные объекты данных больше не отображаются как
R объекты данных в nm, и вместо этого они становятся объектами D (инициализированный раздел).
Это предполагает, что объект данных будет помещен в доступную для записи память, о....
Я компилировал библиотеку C и компоновал файлы библиотеки Python3 для привязок Python. Я использовал файл python39.lib в качестве ссылки, но мне было интересно, в чем разница между «версионным» номером (например, python3x.lib) и не версионным (python3.lib).
В ответ на вопрос забыл упомянуть, что эт....
27 Янв 2021 в 15:12
Я хочу передать параметр компоновщика /DYNAMICBASE:no в компоновщик msvc через файл vcxproj, который msbuild использует для компиляции проекта.
Если кто-то захочет повторить мои ошибки, я использую этот файл vcxproj, чтобы скомпилировать биткойн, используя эту команду для сборки проекта:
msbuild bi....
Это видео на YouTube показывает структуру виртуальной памяти программы, который включает следующие сегменты от адреса старшей памяти до адреса младшей памяти.
ядро стек (растет от высоких адресов к низким адресам) куча (растет от младших адресов к старшим адресам) данные текст
Всегда ли так располо....
Я не знаю правильный синтаксис для связывания кнопки HTML с JS onclick
P.S Я проверил Google и DevDocs на предмет ответов, но их не было....
13 Янв 2021 в 14:11
Дело яснее, чем заголовок вопроса.
У меня этот фрагмент кода работает нормально. Он объявляет функцию и затем печатает ее тип:
int f(int); // function receiving int
std::cout << "int f(int); type of f = " << typeid(f).name() << std::endl;
Но когда я передаю функцию в качестве параметра функции ша....