Essayez d'ajouter -nostartfiles
à vos options d'éditeur de liens, c'est-à-dire
$(LINK) -nostartfiles -g ...
À partir de la documentation de gcc :
-nostartfiles
Do not use the standard system startup files when linking. The standard system libraries are used normally, unless -nostdlib or -nodefaultlibs is used.
Cela provoque crt1.o
ne pas être lié (il est normalement lié par défaut) - normalement utilisé uniquement lorsque vous implémentez votre propre _start
code.
-shared
L'option de lien doit être utilisée lorsque vous compilez un .so
Le problème pour moi était, j'ai mis par erreur int main()
dans un espace de noms. Assurez-vous de ne pas le faire, sinon vous obtiendrez cette erreur de lien ennuyeuse.
J'espère que cela aidera quelqu'un :)