zoukankan      html  css  js  c++  java
  • 第49月第20天 在Mac OS X上.dylib和.so之间的区别

    1.

    在Mac OS X上.dylib和.so之间的区别在于它们的编译方式。对于.so文件,您使用-shared;对于.dylib,您使用-dynamiclib。.so和.dylib都可以作为动态库文件互换,并且都具有DYLIB或BUNDLE的类型。

    https://www.imooc.com/wenda/detail/596644

    g++ -o librain.so -shared -fPIC src/boost_rain.cpp -I/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -lboost_python27 -lpython

    cmake

    add_library(librain MODULE  ${LIBSRC})

    https://cmake.org/cmake/help/v3.0/command/add_library.html

      

    2.

    安装

    brew install boost

    brew install boost-python

    brew install pybind11

    1)输出${PYTHON_LIBRARIES}

    MESSAGE(STATUS "=====" ${PYTHON_LIBRARIES})

    2)

    which python | xargs ls -al

    /usr/local/bin/python -> ../Cellar/python@2/2.7.16_1/bin/python

    3)CMakeLists.txt

    include_directories(SYSTEM ${Boost_INCLUDE_DIR})
    include_directories(SYSTEM ${PYTHON_INCLUDE_DIR})
    include_directories(/include
    ${CMAKE_CURRENT_LIST_DIR}/src)
    MESSAGE(STATUS "=====" ${Boost_INCLUDE_DIR})
    MESSAGE(STATUS "=====" ${PYTHON_INCLUDE_DIR})

    set(My_LIBRARIES "/usr/local/Cellar/boost-python/1.71.0/lib/libboost_python27.dylib")
    set(PYTHON_LIBRARIES "/usr/local/Cellar/python@2/2.7.16_1/Frameworks/Python.framework/Versions/2.7/Python")
    MESSAGE(STATUS "=====" ${PYTHON_LIBRARIES})


    file(GLOB LIBSRC ${CMAKE_CURRENT_LIST_DIR}/src/example.cpp)
    add_library(example MODULE ${LIBSRC})
    set_target_properties(example PROPERTIES PREFIX "")
    target_link_libraries(example ${My_LIBRARIES} ${PYTHON_LIBRARIES})

    file(GLOB LIBSRC ${CMAKE_CURRENT_LIST_DIR}/src/boost_rain.cpp)
    add_library(librain MODULE ${LIBSRC})
    set_target_properties(librain PROPERTIES PREFIX "")
    target_link_libraries(librain ${My_LIBRARIES} ${PYTHON_LIBRARIES})

    3.

     Fatal Python error: PyThreadState_Get: no current thread

    tool -L example.so 

    example.so:

    /usr/local/opt/boost-python/lib/libboost_python27.dylib (compatibility version 0.0.0, current version 0.0.0)

    /usr/local/opt/python@2/Frameworks/Python.framework/Versions/2.7/Python (compatibility version 2.7.0, current version 2.7.0)

    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 902.1.0)

    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1281.100.1)



    https://zhuanlan.zhihu.com/p/33668024

     

  • 相关阅读:
    mysql 之 double( totalsize, decimal)
    java8 实战--- Map merge用法
    java8 stream接口 终端操作 min,max,findFirst,findAny
    tinyint(1)详解
    表单插件——form
    表单验证插件——validate
    使用ajaxStart()和ajaxStop()方法
    使用ajaxSetup()方法设置全局Ajax默认选项
    使用ajax()方法加载服务器数据
    使用serialize()方法序列化表单元素值
  • 原文地址:https://www.cnblogs.com/javastart/p/13845819.html
Copyright © 2011-2022 走看看