3

環境:

簡単な C プログラムである「Discount」のソース コードをダウンロードしました。コードはオンラインでここにあります: http://www.pell.portland.or.us/~orc/Code/discount/

必要なもの:

このコードを、Cocoa アプリにバンドルできる .dylib ファイルに変換したいと考えています。dylib ファイルを取得したら、問題ありません。私が苦労しているのは、そもそもdylibファイルを作成する方法です。

あなたが私に怒鳴る前に、はい、私はお尻をグーグルで検索しました。しかし、この C ソース ファイルのコレクションを .dylib にコンパイルするためにコマンド ラインで何をする必要があるかについての簡単な説明を見つけることができません。私が遭遇したものはすべて複雑であるか、Xcode で dylib プロジェクトを構築することについて話しているか、時代遅れです。(GCCでそれを行うための参考文献をいくつか見つけましたが、LLVMを使用したいと思います。)

インストールする

私が収集したものから、典型的な「make install」を実行すると、.dylib ファイルが /usr/lib に配置されるはずですが、それは私には起こっていないようです。

結論:

割引ソース コードをダウンロードしたら、OS X 10.8.2 で .dylib ファイルを作成するには、コマンド ラインで何をする必要がありますか? ありがとうございました。

4

1 に答える 1

1

そのプロジェクトは、デフォルトでは Mac OS X でダイナミック ライブラリを作成しません。私は、動作するように思われる makefile に簡単なパッチを作成しました。

From a3d6793c5f291d253b8e7aa99e5534503808c325 Mon Sep 17 00:00:00 2001
From: Carl Norum <carl@norum.ca>
Date: Thu, 31 Jan 2013 16:59:24 -0800
Subject: [PATCH] Patch to generate a dynamic library.

---
 Makefile | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/Makefile b/Makefile
index 8532e70..11805dd 100644
--- a/Makefile
+++ b/Makefile
@@ -27,6 +27,7 @@ install: $(PGMS) $(DESTDIR)$(BINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(INCDIR)
    /usr/bin/install -s -m 755 $(PGMS) $(DESTDIR)$(BINDIR)
    ./librarian.sh install libmarkdown VERSION $(DESTDIR)$(LIBDIR)
    /usr/bin/install -m 444 mkdio.h $(DESTDIR)$(INCDIR)
+   /usr/bin/install -m 755 $(MKDLIB).dylib $(DESTDIR)$(LIBDIR)

 install.everything: install install.samples install.man

@@ -82,7 +83,7 @@ theme:  theme.o $(MKDLIB) mkdio.h
 mkd2html:  mkd2html.o $(MKDLIB) mkdio.h
    $(CC) $(LFLAGS) -o mkd2html mkd2html.o -lmarkdown 

-markdown: main.o pgm_options.o $(MKDLIB)
+markdown: main.o pgm_options.o $(MKDLIB) $(MKDLIB).dylib
    $(CC) $(LFLAGS) -o markdown main.o pgm_options.o -lmarkdown 

 makepage:  makepage.c pgm_options.o $(MKDLIB) mkdio.h
@@ -94,6 +95,9 @@ pgm_options.o: pgm_options.c mkdio.h config.h
 main.o: main.c mkdio.h config.h
    $(CC) -I. -c main.c

+$(MKDLIB).dylib: $(OBJS)
+   $(CC) -dynamiclib -o $(MKDLIB).dylib $(OBJS)
+
 $(MKDLIB): $(OBJS)
    ./librarian.sh make $(MKDLIB) VERSION $(OBJS)

-- 
1.7.12.1

構成スクリプトを実行した後、ビルドする前にそれをツリーに適用すると、うまくいくはずです。簡単な部分だけが必要な場合は、次を実行します。

cc -Wno-implicit-int -I. -dynamiclib -o libmarkdown.dylib mkdio.o markdown.o dumptree.o generate.o resource.o docheader.o version.o toc.o css.o xml.o Csio.o xmlpage.o basename.o emmatch.o github_flavoured.o setup.o tags.o html5.o flags.o 

通常のパッケージをビルドした後にコマンド ラインで を実行すると、動的ライブラリが生成されます。その後、自分でインストールできます。

于 2013-02-01T01:01:17.447 に答える