Поскольку люди, похоже, обращаются к этому вопросу, когда речь заходит об ошибках компоновщика, я собираюсь добавить это здесь.
Одной из возможных причин ошибок компоновщика с GCC 5.2.0 является то, что новая библиотека libstdc ++ ABI теперь выбран по умолчанию.
Если вы получаете ошибки компоновщика о неопределенных ссылках на символы, которые включают типы в пространстве имен std :: __ cxx11 или теге [abi: cxx11], то это, вероятно, указывает на то, что вы пытаетесь связать файлы объектов, которые были скомпилированы с различными значениями для макроса _GLIBCXX_USE_CXX11_ABI. Это обычно происходит при подключении к сторонней библиотеке, которая была скомпилирована с более старой версией GCC. Если сторонняя библиотека не может быть перестроена с новым ABI, вам нужно будет перекомпилировать свой код со старым ABI.
blockquote>. Если вы вдруг получите ошибки компоновщика при переключении на GCC после 5.1.0 это было бы замечательно.
Вы не можете этого сделать. Linux создает новый процесс путем последовательного вызова fork()
и exec()
. Никакой другой способ создания процесса не существует.
Но сам fork()
довольно эффективен. Он использует Copy-on-Write для дочернего процесса, поэтому fork()
не копирует память, пока она не понадобится. Итак, если вы назовете exec()
сразу после fork()
, ваша система не будет потреблять слишком много памяти.
UPD. Я вам говорю, говоря о создании процесса. На самом деле существует clone()
вызов, который fork()
использует внутренне. Этот вызов обеспечивает больший контроль над процессом создания, но его может быть сложно использовать. Подробнее читайте в man 2 fork
и man 2 clone
.