【问题标题】:Link X11 using BUCK build for a CPP application为 CPP 应用程序使用 BUCK 构建链接 X11
【发布时间】:2019-03-20 20:05:47
【问题描述】:

我在尝试使用 buck 编译依赖于 X11 的 CPP 应用程序时遇到问题,因为它似乎没有链接 X11 Lib 并导致未定义的引用错误:

 undefined reference to `XOpenDisplay'
collect2: error: ld returned 1 exit status

在研究了错误后,我尝试修改 BUCK 文件以提供正确的标志,并尝试了几种不同的格式:

  platform_linker_flags = [
   # ('^linux.*', ['-lX11','-L/usr/X11/lib','-I/opt/X11/include'])
    ('^linux.*', []),
    ('^linux.*', ['-lX11']),
    ('^linux.*', ['-L/usr/X11/lib']),
  ],

正如您在上面看到的那样,我尝试更改结构等,以查看它是否对链接过程产生了影响,但它仍然无法解决 XOpenDisplay 所需的依赖关系。

任何人都可以解释或参考将系统库应用于降压项目的正确方法或暗示此构建中可能出现的问题吗?

【问题讨论】:

    标签: c++ x11 buck


    【解决方案1】:

    尝试为系统库创建一个“虚拟”目标:

    prebuilt_cxx_library(
      name = 'x11', 
      header_only = True,
      exported_platform_linker_flags = [
        ('linux.*', [ '-lX11' ]),
      ],
    )
    
    cxx_library(
      name = 'foo',
      srcs = glob([
        '**/*.cpp',
      ]),
      deps = [
        ':x11',
      ],
    )
    

    这是Buckaroo使用的方法

    这里有一些讨论:https://github.com/facebook/buck/issues/1443

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-30
      • 1970-01-01
      • 1970-01-01
      • 2019-08-06
      相关资源
      最近更新 更多