Общий ответ: вы не можете, но есть несколько хитростей, которые вы можете сделать.
Например, objcopy из binutils имеет возможность копировать объект, но ставить префикс для каждого символа с помощью - префикс-символов флаг. префиксы часто являются пространствами имен бедного человека и являются «нормальным» способом избежать конфликтов.
Использование довольно просто, примерно так:
objcopy --prefix-symbols "__mylib_" object.o new_object.o
ПРИМЕЧАНИЕ: да, он работает и с файлами .so.
ПРИМЕЧАНИЕ 2: это полностью нарушит искажение имени в c ++, поэтому пытайтесь делать это только в библиотеке с API в стиле C. Поскольку вы говорите о добавлении пространства имен там, где его нет, я полагаю, что это так.