• Building Boost for Android with error “cannot find -lrt”


    编辑tools/build/src/tools/gcc.jam

    rule setup-threading ( targets * : sources * : properties * )
    {
    local threading = [ feature.get-values threading : $(properties) ] ;
    if $(threading) = multi
    {
    local target = [ feature.get-values target-os : $(properties) ] ;
    local option ;
    local libs ;

    switch $(target)
    {
    case android : # No threading options, everything is in already.
    case windows : option = -mthreads ;
    case cygwin : option = -mthreads ;
    case solaris : option = -pthreads ; libs = rt ;
    case beos : # No threading options.
    case haiku : option = ;
    case *bsd : option = -pthread ; # There is no -lrt on BSD.
    case sgi : # gcc on IRIX does not support multi-threading.
    case darwin : # No threading options.
    case * : option = -pthread ; #libs = rt ;
    }

    将libs = rt这行注释掉

    ------------------------------------------------------------------

    Indeed all occurrencies of -lrt with sed doesn't seem to have any impact on the problem.
    What worked for me (in boost 1.53.0 though) is the following:

    Edit tools/build/v2/tools/gcc.jam

    Comment libs = rt ; in this code section (By the way, it could be that you do not have the -pthread option line):

    case * :
    {
    option = -pthread ;
    libs = rt ; <--Comment this line
    }

    Note: As initial/brute force solution, I would take the failed commands and manually run them removing -lrt from them.

    question:

    So I am trying to build boost 1.55 for android, but I am getting linking errors for Boost.System and Boost.Atomic, that say "error: cannot find -lrt". Of course, android doesn't have librt because its built into the C runtime. So, I am trying to get boost so it won't link to librt. I tried just deleting every "-lrt" in the source code:

    find . -type f | xargs -n1 -P 8 sed -i "s/-lrt//g"

    But I still get the same error. How do I make boost not link against librt for android?

    answer:

    Indeed all occurrencies of -lrt with sed doesn't seem to have any impact on the problem.
    What worked for me (in boost 1.53.0 though) is the following:

    Edit tools/build/v2/tools/gcc.jam

    Comment libs = rt ; in this code section (By the way, it could be that you do not have the -pthread option line):

    case * :
    {
    option = -pthread ;
    libs = rt ; <--Comment this line
    }

    Note: As initial/brute force solution, I would take the failed commands and manually run them removing -lrt from them.

  • 相关阅读:
    C# 类动态添加属性、方法(Z)
    WPF三大模板简介(Z)
    C# mongodb 驱动操作(Z)
    解析Exception和C#处理Exception的常用方法总结
    创建 WPF 工具箱控件
    WPF 线程 Dispatcher
    Path
    C#操作字符串方法总结<转>
    P2058 海港
    P2234 [HNOI2002]营业额统计
  • 原文地址:https://www.cnblogs.com/yuanxiaoping_21cn_com/p/6820322.html
Copyright © 2020-2023  润新知