jgm/peg-markdown

Undefined references when using as shared library

Opened this issue · 3 comments

Hey there,
I'm trying to use peg-markdown as a shared library built by this Makefile:

CC=clang
CFLAGS=-c -g -Wall

all: clog
    $(CC) obj/main.o -Llibs/peg-markdown -lpeg-markdown -o clog

clog: src/main.c peg-markdown
    $(CC) $(CFLAGS) src/main.c `pkg-config --cflags glib-2.0` -o obj/main.o

peg-markdown:
    make CC="gcc -fPIC" -C libs/peg-markdown/ library

The generation of the .so seems to work fine but when I try to compile my main program, clang just tells me it does not know how to deal with the gstring stuff:

clang obj/main.o -Llibs/peg-markdown -lpeg-markdown -o clog
libs/peg-markdown/libpeg-markdown.so: error: undefined reference to 'g_string_new'
libs/peg-markdown/libpeg-markdown.so: error: undefined reference to 'g_slist_free'
libs/peg-markdown/libpeg-markdown.so: error: undefined reference to 'g_slist_reverse'
libs/peg-markdown/libpeg-markdown.so: error: undefined reference to 'g_string_free'
libs/peg-markdown/libpeg-markdown.so: error: undefined reference to 'g_slist_prepend'
libs/peg-markdown/libpeg-markdown.so: error: undefined reference to 'g_string_append_printf'
libs/peg-markdown/libpeg-markdown.so: error: undefined reference to 'g_string_append'
libs/peg-markdown/libpeg-markdown.so: error: undefined reference to 'g_string_insert_c'

I tried using clang 3.3 and gcc 4.8.1

jgm commented

I don't know. You might write to the person who contributed the patch
for building a shared library. (Look at the commit logs.)

+++ Lars Herbach [Sep 03 13 10:36 ]:

Hey there,
I'm trying to use peg-markdown as a shared library built by this
Makefile:
CC=clang
CFLAGS=-c -g -Wall

all: clog
$(CC) obj/main.o -Llibs/peg-markdown -lpeg-markdown -o clog

clog: src/main.c peg-markdown
$(CC) $(CFLAGS) src/main.c pkg-config --cflags glib-2.0 -o obj/main.o

peg-markdown:
make CC="gcc -fPIC" -C libs/peg-markdown/ library

The generation of the .so seems to work fine but when I try to compile
my main program, clang just tells me it does not know how to deal with
the gstring stuff:
clang obj/main.o -Llibs/peg-markdown -lpeg-markdown -o clog
libs/peg-markdown/libpeg-markdown.so: error: undefined reference to 'g_string_ne
w'
libs/peg-markdown/libpeg-markdown.so: error: undefined reference to 'g_slist_fre
e'
libs/peg-markdown/libpeg-markdown.so: error: undefined reference to 'g_slist_rev
erse'
libs/peg-markdown/libpeg-markdown.so: error: undefined reference to 'g_string_fr
ee'
libs/peg-markdown/libpeg-markdown.so: error: undefined reference to 'g_slist_pre
pend'
libs/peg-markdown/libpeg-markdown.so: error: undefined reference to 'g_string_ap
pend_printf'
libs/peg-markdown/libpeg-markdown.so: error: undefined reference to 'g_string_ap
pend'
libs/peg-markdown/libpeg-markdown.so: error: undefined reference to 'g_string_in
sert_c'

I tried using clang 3.3 and gcc 4.8.1


Reply to this email directly or [1]view it on GitHub.
[xJAuenYDiIoVt3LF3y68412lOGlbZ7PtIvCEmk88aveh2oQ2RUgC7Q_xLPVykXJS.gif]

References

  1. #29

You might have to add pkg-config --libs glib-2.0 to your compiling rule
of 'clog' to link the glib.

On Wed, Sep 4, 2013 at 1:36 AM, Lars Herbach notifications@github.comwrote:

Hey there,
I'm trying to use peg-markdown as a shared library built by this Makefile:

CC=clang
CFLAGS=-c -g -Wall

all: clog
$(CC) obj/main.o -Llibs/peg-markdown -lpeg-markdown -o clog

clog: src/main.c peg-markdown
$(CC) $(CFLAGS) src/main.c pkg-config --cflags glib-2.0 -o obj/main.o

peg-markdown:
make CC="gcc -fPIC" -C libs/peg-markdown/ library

The generation of the .so seems to work fine but when I try to compile my
main program, clang just tells me it does not know how to deal with the
gstring stuff:

clang obj/main.o -Llibs/peg-markdown -lpeg-markdown -o clog
libs/peg-markdown/libpeg-markdown.so: error: undefined reference to 'g_string_new'
libs/peg-markdown/libpeg-markdown.so: error: undefined reference to 'g_slist_free'
libs/peg-markdown/libpeg-markdown.so: error: undefined reference to 'g_slist_reverse'
libs/peg-markdown/libpeg-markdown.so: error: undefined reference to 'g_string_free'
libs/peg-markdown/libpeg-markdown.so: error: undefined reference to 'g_slist_prepend'
libs/peg-markdown/libpeg-markdown.so: error: undefined reference to 'g_string_append_printf'
libs/peg-markdown/libpeg-markdown.so: error: undefined reference to 'g_string_append'
libs/peg-markdown/libpeg-markdown.so: error: undefined reference to 'g_string_insert_c'

I tried using clang 3.3 and gcc 4.8.1


Reply to this email directly or view it on GitHubhttps://github.com//issues/29
.

pkg-config --libs glib-2.0 did not change anything.

On 09/03/13 23:33, yanlinlin82 wrote:

You might have to add pkg-config --libs glib-2.0 to your compiling rule
of 'clog' to link the glib.

On Wed, Sep 4, 2013 at 1:36 AM, Lars Herbach
notifications@github.comwrote:

Hey there,
I'm trying to use peg-markdown as a shared library built by this
Makefile:

CC=clang
CFLAGS=-c -g -Wall

all: clog
$(CC) obj/main.o -Llibs/peg-markdown -lpeg-markdown -o clog

clog: src/main.c peg-markdown
$(CC) $(CFLAGS) src/main.c pkg-config --cflags glib-2.0 -o obj/main.o

peg-markdown:
make CC="gcc -fPIC" -C libs/peg-markdown/ library

The generation of the .so seems to work fine but when I try to
compile my
main program, clang just tells me it does not know how to deal with the
gstring stuff:

clang obj/main.o -Llibs/peg-markdown -lpeg-markdown -o clog
libs/peg-markdown/libpeg-markdown.so: error: undefined reference to
'g_string_new'
libs/peg-markdown/libpeg-markdown.so: error: undefined reference to
'g_slist_free'
libs/peg-markdown/libpeg-markdown.so: error: undefined reference to
'g_slist_reverse'
libs/peg-markdown/libpeg-markdown.so: error: undefined reference to
'g_string_free'
libs/peg-markdown/libpeg-markdown.so: error: undefined reference to
'g_slist_prepend'
libs/peg-markdown/libpeg-markdown.so: error: undefined reference to
'g_string_append_printf'
libs/peg-markdown/libpeg-markdown.so: error: undefined reference to
'g_string_append'
libs/peg-markdown/libpeg-markdown.so: error: undefined reference to
'g_string_insert_c'

I tried using clang 3.3 and gcc 4.8.1


Reply to this email directly or view it on
GitHubhttps://github.com//issues/29
.


Reply to this email directly or view it on GitHub
#29 (comment).