我现在陷入了整整一个下午,试图让python以32位模式构建.我使用openSUSE 11.3运行64位Linux机器,我安装了必要的-devel和-32bit软件包,以32位模式构建应用程序.
python构建的问题似乎不在make运行本身,而是在make的调用后的setup.py之后运行.
我找到了Ubuntu Linux的以下说明:h**p://indefinitestudies.org/2010/02/08/how-to-build-32-bit-python-on-ubuntu-9-10-x86_64/
当我按照描述进行操作时,我得到以下输出:
但是我有libnetline,libopenssl等的-32bit包.pp.安装,但当然,它们位于/ lib和/ usr/lib下,而不是/ lib64和/ usr/lib64.
当我启动由此构建产生的python二进制文件时,我得到:
./python
Python 2.6.6 (r266:84292, Oct 5 2010, 21:22:06)
[GCC 4.5.0 20100604 [gcc-4_5-branch revision 160292]] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Traceback (most recent call last):
File "/etc/pythonstart", line 7, in <module>
import readline
ImportError: No module named readline
Run Code Online (Sandbox Code Playgroud)
那么如何让setup.py来观察LDFLAGS = -L/lib命令?
任何帮助是极大的赞赏.
此致,菲利普
我只是想编译boost.python的"hello world"示例而不使用所有的bjam魔法.我的boost.python安装工作正常,我用bjam成功构建了示例并通过了测试套件.
现在,对于我的项目,我需要在普通的Make环境中使用所有这些东西.我不想移植到另一个构建工具.
所以我的天真方法当然只是将包含路径指向正确的标题并链接到正确的库.我将boost python构建为system-layout,static,runtime-static,这意味着它只是一个驻留在/ usr/local/lib中的libboost_python.a.
不幸的是,我在生成的.so库中得到了未解析的外部符号.
这是我尝试从libs/python/example/tutorial/hello.cpp构建示例:
$ cat hello.cpp
// Copyright Joel de Guzman 2002-2004. Distributed under the Boost
// Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt
// or copy at http://www.boost.org/LICENSE_1_0.txt)
// Hello World Example from the tutorial
// [Joel de Guzman 10/9/2002]
#include <boost/python/module.hpp>
#include <boost/python/def.hpp>
char const* greet()
{
return "hello, world";
}
BOOST_PYTHON_MODULE(hello_ext)
{
using namespace boost::python;
def("greet", greet);
}
$ g++ -I/usr/local/include -I/usr/include/python -fpic -c -o hello.o
hello.cpp
$ g++ -shared -Wl,-soname,"libhello.so" …Run Code Online (Sandbox Code Playgroud) 我有一个函数,它接受一个int指针并通过boost :: python暴露它.如何从python中调用此函数?
在C++中使用boost :: python:
void foo(int* i);
...
def("foo", foo);
Run Code Online (Sandbox Code Playgroud)
在python中:
import foo_ext
i = 12
foo_ext.foo(i)
Run Code Online (Sandbox Code Playgroud)
结果是
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
Boost.Python.ArgumentError: Python argument types in
foo(int)
did not match C++ signature:
foo(int* i)
Run Code Online (Sandbox Code Playgroud)
那么如何传递指针?
假设svn服务器上有以下结构:
-svn-|
|-trunk --- |
| | - dirA
| | - dirB
|
|-branches -|
| - foo - |
| - dirA
Run Code Online (Sandbox Code Playgroud)
在修订版X中,foo分支是从主干创建的.一段时间后,在修订版Y,目录dirB在主干中创建.现在,在修订版Z中,我想将dirB(rev Z)集成到foo分支中.
我试过了:
md dirB
svn add dirB
svn merge --dry-run --force ssh://server/svn/trunk/dirB dirB
Run Code Online (Sandbox Code Playgroud)
和
svn merge -rY:Z--dry-run --force ssh://server/svn/trunk/dirB dirB
Run Code Online (Sandbox Code Playgroud)
并且
cd dirB
svn merge --dry-run --force ssh://server/svn/trunk/dirB .
Run Code Online (Sandbox Code Playgroud)
我每次都得到
Summary of conflicts:
Tree conflicts: 34
Run Code Online (Sandbox Code Playgroud)
怎么做这个合并?
boost-python ×2
python ×2
32bit-64bit ×1
bjam ×1
build ×1
linux ×1
makefile ×1
merge ×1
pointers ×1
svn ×1