Задано с помощью кода ниже:
#include <stdio.h>
void output()
{
printf("hello \n");
}
int main()
{
output();
return 0;
}
Когда приведенный выше код компилируется с помощью команды ниже:
gcc hello.c -shared -fPIC -pie -o libhello.so -Wl,-E
Сгенерированный libhello.so не только общая библиотека, но также исполняемый файл. Однако при изменении g cc на clang , как показано ниже
clang-10 hello.c -shared -fPIC -pie -o libhello.so -Wl,-E
Компиляция выдает предупреждение ниже:
clang: warning: argument unused during compilation: '-pie' [-Wunused-command-line-argument]
При выполнении libhello.so скомпилирован clang-10 , он тоже вылетел.
Вопрос: 1. Можно ли использовать clang compile runnable shared lib как g cc ?
Примечание: этот вопрос задается только для моего собственного любопытства, и я не сталкиваюсь с какой-либо практической проблемой.