jart / bestline

ANSI Standard X3.64 Teletypewriter Command Session Library
Other
443 stars 29 forks source link

help of building shared library #20

Closed okcy1016 closed 1 year ago

okcy1016 commented 2 years ago

Hi jart, thanks for the excellent work of both cosmopolitan and bestline.

Recently, I need a cross-platform readline replacement for python since it simply not working on windows, and with some researching I found this repo.

I initially tried to compile bestline.c to libbestline.so, with GNU gcc and it's std lib, I could get it work, but it is not really portable since it rely on libc and several libs at runtime, see: image

Then I tried to compile it with cosmopolitan which I consider it features a portable libc runtime, I tried the following build command:

libbestline.so: bestline.c crt.o ape.o ape.lds cosmopolitan.a cosmopolitan.h
        gcc -g -Os -fPIC -shared -fno-pie -no-pie -mno-red-zone -nostdlib -nostdinc -fno-omit-frame-pointer -pg -mnop-\
mcount -o $@ bestline.c -Wl,--gc-sections -fuse-ld=bfd -Wl,-T,ape.lds -include cosmopolitan.h crt.o ape.o cosmopolitan\
.a

Unfortunatelly, it produces a ELF 64-bit LSB executable instead of a shared object: image what I want is to build is a dynamic library with ldd comand shows not a dynamic executable. Could you send some help to me? I would be very appreciate for that. thank you in advance :D

jart commented 1 year ago

Cosmopolitan doesn't have support for building dynamic shared objects. You need to build your executable with cosmopolitan. If you're looking to use bestline with Python, then consider trying python.com where we've already ported bestline to Python.

git clone https://github.com/jart/cosmopolitan
cd cosmopolitan
build/bootstrap/make.com o//third_party/python/python.com
o//third_party/python/python.com

Enjoy!