Вот мой код:
$ cat library.h
#ifndef __LIBRARY_H__
#define __LIBRARY_H__
int hello_world();
#endif // __LIBRARY_H__
$ cat library.c
#include "library.h"
int hello_world()
{
return 42;
}
$ cat main.c
#include
#include "library.h"
int main(int argc, char** argv)
{
int res = hello_world();
printf ("%d\n", res);
return 0;
}
Собираю командами:
$ cat build.sh
#!/bin/bash
clang -shared -nostdlib library.c -o library.so
clang -L ./ library.so main.c
Запускаю
LD_LIBRARY_PATH=. ./a.out
проблема в том, что
$ file library.so
library.so: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, not stripped
а должен быть не pie executable