在 scons 'Program' 命令中使用 'LIBS' 找不到静态库,为什么?

2023-12-08

我有一个“n.c”作为主函数,“o.c”作为导入函数,如下所示:

$ cat n.c o.c
int f();
int main(){
  f();
  return 0;
}
#include<stdio.h>
int f(){
  printf("hello\n");
  return 2;
}

然后 scons 文件如下:

Library('o.c')
Program('n.c',LIBS=['o'])

我这里希望的是编译o.c并生成libo.a(OK),n.c将使用这个'.a'生成最终的可执行文件。所以我指定了 LIBS=['o'],希望它会指定一个归档文件来查找 libo.a 库。但:

$ scons -Q
gcc -o n n.o -lo
/usr/bin/ld: cannot find -lo
collect2: error: ld returned 1 exit status
scons: *** [n] Error 1

实际上,scons 将我的命令解释为“-lo”,即查找动态共享库。 这不是我想要的,因为在链接期间,存档像目标文件一样使用。 '-l' 是否适用于存档文件?为什么 scons 解释 LIBS 以使用动态链接共享库?

Thanks.


您还需要指定搜索库的路径,在本例中:

Program('n.c',LIBS=['o'], LIBPATH=['.'])

另请参阅我们的第 4 章“构建和链接库”用户指南,它不仅解释了如何创建和使用库,还进一步说明了您在上面的声明“SCons 解释 LIBS 以使用动态链接共享库”是完全错误的。否则目标文件将以*.os反而...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 scons 'Program' 命令中使用 'LIBS' 找不到静态库,为什么? 的相关文章

  • 我应该使用哪个 Linux 发行版作为 Xen 主机? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我为家庭办公室订购了一台服务器 我想用 Xen 对其进行分区 我认为这将使事情保持干净并且更容易维护 我将运行 MySQL PostgreSQL
  • Linux、ARM:为什么仅当启动时存在 I2C GPIO 扩展器时才创建 gpiochip

    在 imx6sx 硬件平台 NXP 嵌入式 ARM 上使用 Linux 3 14 52 问题是设备树中指定的 PCF8575 I2C GPIO 扩展器不会实例化为 sys class gpio 结构中的设备 除非它们在内核启动期间存在 这些
  • 什么定义了类型的大小?

    ISO C 标准规定 sizeof char lt sizeof short lt sizeof int lt sizeof long 我在 BIT Linux mint 19 1 上使用 GCC 8 大小为long int is 8 我正
  • 无关的库链接

    我有一个可能有点愚蠢的问题 因为我很确定我可能已经知道答案了 假设你有静态库A 动态共享库B和你的linux下的程序C 假设库 A 调用库 B 中的函数 并且您的程序调用库 A 中的函数 现在假设 C 在 A 中调用的所有函数都不使用 B
  • 具有少量父设备属性的 udev 规则

    我需要复杂且通用的udev规则来确定插入任何 USB 集线器的特定端口的 USB 设备 所以 我必须结合设备树不同层的父属性 我有这个 udevadm info query all name dev ttyUSB0 attribute wa
  • 如何从linux命令行运行.exe可执行文件? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在 Windows 中有一个 abc exe 可执行文件 我可以使用 DOS 命令提示来执行此应用程序 并为其提供一些运行时变量 我想从
  • touch命令在一个目录下创建多个文件(不同名称)

    我想制作一个在 bash 中创建目录和文件结构的脚本 我尝试过这样的事情 mkdir p 1 2 touch 1 2 a b c a b c 应该是在一个命令或其他命令中创建的文件 但由于某种原因 结构是这样的 current folder
  • 操作系统什么时候清除进程的内存

    进程在某些操作系统上成功或异常终止 操作系统何时决定擦除分配给该进程的内存 数据 代码等 在退出时或当它想为新进程分配内存时 这个清除内存分配过程在所有操作系统 winXP Win7 linux Mac 上都相同吗 据我了解 页表具有该进程
  • 如何在我的 AWS EC2 实例上安装特定字体?

    我有一个在 AWS EC2 Amazon Linux Elastic Beanstalk 实例上运行的 Python 应用程序 该实例需要某些特定字体才能生成输出 并且想知道如何在部署或实例启动过程中安装它们 我的代码在本地计算机 OS X
  • 如何让 clangd 转向 c++20

    当没有其他信息时 如何让 clangd 回退到 c 20 例如 在第一次构建之前 cmake 可以生成一个 这是在带有最新 LLVM 的 Arch Linux 上 这是通过 Emacs LSP 运行的 但这应该没有什么区别 你可以加 Com
  • 无法执行'x86_64-conda_cos6-linux-gnu-gcc':没有这样的文件或目录(pysam安装)

    我正在尝试安装 pysam 执行后 python path to pysam master setup py build 这个错误的产生是 unable to execute x86 64 conda cos6 linux gnu gcc
  • 在Linux中断上下文中运行用户线程

    我正在编写一些定制的应用程序 并允许更改 Linux 内核中的中断处理程序代码 我有一个用户线程正在等待中断发生 如果发生中断 那么我要做的第一件事就是执行该用户线程 有什么办法让它发挥作用吗 Thanks 创建一个字符设备 这就是内核所做
  • 在 Ubuntu 16.04 上找不到 printf.c

    我最近切换到Ubuntu 16 04 我在用vscode作为 Ubuntu 上的 IDE 我配置了其他语言 但我无法做到这一点C C 我创建c cpp properties json launch json tasks json 当我开始编
  • 在 Chrome 中使用非常基本的 jQuery 单击链接时出现 INDEX_SIZE_ERR

    在 Chrome 版本 20 0 1132 57 中 多次单击附加了一些基本 jQuery 的简单链接 出现以下错误 Error in event handler for undefined INDEX SIZE ERR DOM Excep
  • 如果执行了锚点 href 链接,则禁用 onClick 事件

    我有一张桌子 每一行都是一个由 js 调用的某个页面 例如 google com 的链接 onClick window open 方法 tr class tr 在最后一栏中我有一个锚点链接链接到其他页面 例如 jsfiddle td cla
  • 每个进程每个线程的时间量

    我有一个关于 Windows 和 Linux 中进程和线程的时间量子的问题 我知道操作系统通常为每个线程提供固定的时间量 我知道时间量根据前台或后台线程而变化 也可能根据进程的优先级而变化 每个进程有固定的时间量吗 例如 如果操作系统为每个
  • Linux shell 脚本:十六进制数字到二进制字符串

    我正在 shell 脚本中寻找一些简单的方法来将十六进制数字转换为 0 和 1 字符的序列 Example 5F gt 01011111 是否有任何命令或简单的方法来完成它 或者我应该为其编写一些开关 echo ibase 16 obase
  • C 程序从连接到系统的 USB 设备读取数据

    我正在尝试从连接到系统 USB 端口的 USB 设备 例如随身碟 获取数据 在这里 我可以打开设备文件并读取一些随机原始数据 但我想获取像 minicom teraterm 这样的数据 请让我知道我可以使用哪些方法和库来成功完成此操作以及如
  • 劫持系统调用

    我正在编写一个内核模块 我需要劫持 包装一些系统调用 我正在暴力破解 sys call table 地址 并使用 cr0 来禁用 启用页面保护 到目前为止一切顺利 一旦完成 我将公开整个代码 因此如果有人愿意 我可以更新这个问题 无论如何
  • 为什么 Linux 对目录使用 getdents() 而不是 read()?

    我浏览 K R C 时注意到 为了读取目录中的条目 他们使用了 while read dp gt fd char dirbuf sizeof dirbuf sizeof dirbuf code Where dirbuf是系统特定的目录结构

随机推荐

  • 使用 python scipy 正确插值 3D 矢量场

    GOAL 我的目标是使用 python 插值 3D 矢量场 CODE 原始向量场 import numpy as np import matplotlib pyplot as plt For interpolation from scipy
  • 如何将包含月份名称的日期字符串转换为日期时间?

    我确信这一定很简单 但是搜索引擎引导我的文章回答了除此之外的所有问题 我有一个字符串 13 February 2023 13 45 40 我需要将其转换为日期时间 以便我可以进行比较 你是如何安排这样的约会的 它是否需要一个比我更聪明的专业
  • 如何将文件从沙盒应用程序正确复制到应用程序脚本文件夹?

    我真的很困惑如何正确复制文件并授予执行权限 例如来自沙盒应用程序的 AppleScript 文件 我读过几篇文章和主题 但读得越多 我就越困惑 The Task 我的应用程序需要运行一个非常简单的AppleScript从一个 scpt文件
  • jboss6中log4j设置在哪里配置

    jboss 6 0 0 Final 似乎没有用于在 jboss5 中配置 log4j 设置的 jboss log4j xml 即在 server default conf jboss log4j xml 下 显然 自版本 6 以来 名称和位
  • 如何在Android操作栏开关中获取/设置操作事件

    我找到了这个帖子如何给android操作栏添加开关 这对我有用 但我无法获取它的事件 我正在使用 appcompat 并且我对 actionLayout 和 showAsAction 使用了应用程序命名空间 但我无法处理其对 onOptio
  • 根据模式将文件拆分为多个文件,并通过 Unix 中的搜索模式命名新文件?

    如何根据搜索模式拆分文件 并且将生成的新文件的文件名将等于用于拆分文件的搜索模式 目前 我正在使用以下命令来分割文件 awk GROUP x F i print gt x cdw all jobs reduced3 txt 它生成的文件名称
  • 使用 jQuery 和 Drupal6 自动更新宽度/长度/面积

    我正在使用 Drupal 创建测量表 Drupal 6 中的测量表 并且现在所有字段都已就位 我只需要编写一些 jQuery 在用户输入数据时自动更新相应的字段 代码如下 jQuery document ready function inp
  • 如何将列表分配为子列表,同时保持元素的原始顺序?

    如何将列表拆分为给定数量的列表 按顺序获取元素并将它们分配到子列表 因此不对列表进行分区 我想尽可能 好 地做到这一点 使用 Java 8 功能或 Guava 或类似的东西 示例列表 1 2 3 4 5 6 7 应分为 3 部分 1 4 7
  • 在 HTML 选择下拉选项中设置下拉元素的宽度

    我正在开发一个网站 该网站涉及使用 PHP 脚本自动填充选择框 这一切都工作正常 除了问题是我用来填充文本框的标题很长 它们是期刊文章和演示文稿标题 下拉框延伸到最长元素的宽度 该元素延伸到屏幕边缘 因此使滚动条无法到达 我尝试过各种方法尝
  • 使用 Postman 访问 OAuth 2.0 Google API

    我正在尝试访问邻近谷歌API using 邮递员 Chrome 应用程序 我已按照邮递员和谷歌开发网站上的教程进行操作 但仍然收到 401 错误消息 我在做什么 第 1 步 启用 Proximity API 为了使用 Proximity A
  • :app:processDebugResources 的executeTaskAction 失败

    我收到此错误消息 构建 构建失败 gt 运行构建 gt 运行任务 gt app processDebugResources gt executeTaskAction 下面显示的代码顺序为 错误消息 然后 build gradle Proje
  • 为什么Python中主进程退出时子进程(daemon=True)不退出?

    这是官方的解释daemonpython 多处理中的标志 当进程退出时 它会尝试终止其所有守护子进程 据我了解 父进程退出时会杀死其守护进程标志设置为 True 的子进程 下面是我用来证明我的猜测的代码 但结果不同 import multip
  • 打字稿条件:backend_layout(带幻灯片)

    我用这个条件 globalVar GP colPos 0 page backend layout pagets MainTemplate 我的问题是我的 子页面 没有选择 backend layout 因为设置了父页面 后端布局 此页面的子
  • C函数内存分配

    在 C 语言中 函数何时分配以及它在内存中的何处 函数的内存是在第一次编译程序时分配的 还是在第一次看到函数调用时分配的 它是分配在堆栈上还是在代码段中 你的问题问得很好 但是要做好应对一些额外复杂性的准备 因为其中一些东西会接触到运行代码
  • 使用 AutoHotKey 查找并填写输入字段

    对所有 AutoHotKey 大师的挑战 给我们一个函数查找并移动光标到输入字段 例如登录名 或者发送输入文本 对于像我这样又老又懒的黑客来说 只是摆弄 AHK 它看起来像这样 FindFillField elementid sendtex
  • Javascript Array.some() 和 Array.every() 相当于 Set?

    在 JavaScript 中 是否有等价的Array some and Array every 为了Set内置对象 不 唯一的内置方法Set prototype are Set prototype add Set prototype cle
  • 从 &str 数组获取 Iterator

    我正在尝试抽象一个函数来获取两个实例std str Lines以及用于测试目的的模拟版本 由一系列创建 str 我的代码 确实有效 看起来像这样 use std fs test fn test day 1 let v 3 3 4 2 4 i
  • 如何解决“Newtonsoft.Json.JsonSerializationException无法找到用于类型的构造函数”Android错误?

    我正在使用 Unity3D 开发应用程序 我将我自己的实用程序 DLL 与一些类一起使用 我已经工作了几个月了 并且毫无问题地进行了很多构建 编译 上周向 DLL 添加了一个新类 它在我的 PC 中运行良好 但当我构建该项目并在我的 And
  • Pymunk 伺服关节

    如何在 Pymunk 中实现 伺服 关节 我正在尝试创建一个简单的模型 其中一个盒子在其下方的一条细 腿 上保持平衡 我已经能够创建一个盒子并使用PinJoint 但似乎没有任何方法可以控制连接连接到盒子的角度 我希望能够指定附着角度 其他
  • 在 scons 'Program' 命令中使用 'LIBS' 找不到静态库,为什么?

    我有一个 n c 作为主函数 o c 作为导入函数 如下所示 cat n c o c int f int main f return 0 include