0

Pythonが埋め込まれているcで書かれたプログラムをコンパイルしようとしています。

python3.3-config -cflagsこのコマンドで使用したcflagsを取得するために実行しました。

% >> clang -v einformer.c -o einformer - I/usr/local/Cellar/python3/3.3.0/Frameworks/Python.framework/Versions/3.3/include/python3.3m -I/usr/local/Cellar/python3/3.3.0/Frameworks/Python.framework/Versions/3.3/include/python3.3m -Wno-unused-result -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/usr/local/include -I/usr/local/opt/sqlite/include
Apple LLVM version 4.2 (clang-425.0.24) (based on LLVM 3.2svn)
Target: x86_64-apple-darwin12.2.0
Thread model: posix
"/usr/bin/clang" -cc1 -triple x86_64-apple-macosx10.8.0 -emit-obj -disable-free -disable-llvm-verifier -main-file-name einformer.c -pic-level 2 -mdisable-fp-elim -masm-verbose -munwind-tables -target-cpu core2 -target-linker-version 136 -v -g -resource-dir /usr/bin/../lib/clang/4.2 -D NDEBUG -I /usr/local/Cellar/python3/3.3.0/Frameworks/Python.framework/Versions/3.3/include/python3.3m -I /usr/local/Cellar/python3/3.3.0/Frameworks/Python.framework/Versions/3.3/include/python3.3m -I /usr/local/include -I /usr/local/opt/sqlite/include -fmodule-cache-path /var/folders/lz/5nhsdlnn3x9g8ry_mkgtgh500000gp/T/clang-module-cache -c-isystem /usr/include/python2.6 -c-isystem . -O3 -Wno-unused-result -Wall -Wstrict-prototypes -fdebug-compilation-dir /Users/ardentapprentice/dev/osx/test -ferror-limit 19 -fmessage-length 140 -fwrapv -stack-protector 1 -mstackrealign -fblocks -fobjc-runtime=macosx-10.8.0 -fobjc-dispatch-method=mixed -fobjc-default-synthesize-properties -fno-common -fdiagnostics-show-option -fcolor-diagnostics -o /var/folders/lz/5nhsdlnn3x9g8ry_mkgtgh500000gp/T/einformer-T6nymD.o -x c einformer.c
clang -cc1 version 4.2 based upon LLVM 3.2svn default target x86_64-apple-darwin12.2.0
ignoring duplicate directory "/usr/local/Cellar/python3/3.3.0/Frameworks/Python.framework/Versions/3.3/include/python3.3m"
ignoring duplicate directory "/usr/local/include"
  as it is a non-system directory that duplicates a system directory
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/Cellar/python3/3.3.0/Frameworks/Python.framework/Versions/3.3/include/python3.3m
 /usr/local/opt/sqlite/include
 /usr/include/python2.6
 .
 /usr/local/include
 /usr/bin/../lib/clang/4.2/include
 /usr/include
 /System/Library/Frameworks (framework directory)
 /Library/Frameworks (framework directory)
End of search list.
einformer.c:92:25: warning: implicit declaration of function 'PyString_AsString' is invalid in C99 [-Wimplicit-function-declaration]
    path_array[i] = PyString_AsString(pypath);
                    ^
1 warning generated.
 "/usr/bin/ld" -demangle -dynamic -arch x86_64 -dynamic -macosx_version_min 10.8.0 -o einformer /var/folders/lz/5nhsdlnn3x9g8ry_mkgtgh500000gp/T/einformer-T6nymD.o -lSystem /usr/bin/../lib/clang/4.2/lib/darwin/libclang_rt.osx.a
Undefined symbols for architecture x86_64:
  "_PyList_GetItem", referenced from:
      _main in einformer-T6nymD.o
  "_PyList_Size", referenced from:
      _main in einformer-T6nymD.o
  "_PyRun_SimpleStringFlags", referenced from:
      _main in einformer-T6nymD.o
  "_PyString_AsString", referenced from:
      _main in einformer-T6nymD.o
  "_Py_Finalize", referenced from:
      _main in einformer-T6nymD.o
  "_Py_Initialize", referenced from:
      _main in einformer-T6nymD.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

clangがヘッダーを見つけるのに問題があるようです。<Python.h>ソースに含まれています私は何が間違っているのかわかりません:/

私は約3時間かけてPythonのドキュメントhttp://docs.python.org/3.3/c-api/index.htmlを調べて調べましたが、役立つ情報が見つからないようです。

4

1 に答える 1

1

python3.3-config --cflagsヘッダーを見つけるために必要な引数のみを提供します。python3.3-config --ldflagsリンカフラグが表示されます。これは、次のようなコンパイラ呼び出しを使用してプログラムをコンパイルできる必要があることを意味します。

clang -v einformer.c -o einformer $(python3.3-config --cflags) $(python3.3-config --ldflags)
于 2013-02-27T07:10:34.643 に答える