小编ogs*_*ogs的帖子

Bitbake 错误 - 没有 RPROVIDES

我想将应用程序拆分为多个包。基本上我只想添加另一个可以使用特定图像构建的图像。

在与我添加的应用程序关联的 .bb 文件中:

SRC_URI = " \
          ...
          file://api.conf \
          file://script.sh \
          "

PACKAGES =+ "${PN} ${PN}-tools"

FILES_${PN}-tools = "${bindir}/mrvl/tools/script.sh \
                     ${sysconfdir}/mrvl/api.conf \
                    "
Run Code Online (Sandbox Code Playgroud)

然后,我在我的 bb 图像测试中添加了以下行

IMAGE_INSTALL += " mrvl-tools"
Run Code Online (Sandbox Code Playgroud)

我正在使用命令 bitbake image-test 返回:

ERROR: Nothing RPROVIDES 'mrvl-tools' (but /home/usr/../image-test.bb RDEPENDS on or otherwise requires it)
NOTE: Runtime target 'mrvl-tools' is unbuildable, removing...
Missing or unbuildable dependency chain was: ['mrvl-tools']
ERROR: Required build target 'image-test' has no buildable providers.
Missing or unbuildable dependency chain was: ['image-test', 'mrvl-tools']
Run Code Online (Sandbox Code Playgroud)

我遵循了 …

packages openembedded bitbake yocto

6
推荐指数
1
解决办法
3万
查看次数

发送调制解调器AT命令和解析结果

我想AT通过使用shell脚本向我的调制解调器发送命令并解析结果以验证是否返回了OK.

at=`echo -ne "AT+CFUN1=1\r\n" > /dev/ttyUSB0 | cat /dev/ttyUSB0`
Run Code Online (Sandbox Code Playgroud)

解析at1变量并提取"OK"或"ERROR"的最佳方法是什么?

linux bash shell modem at-command

6
推荐指数
1
解决办法
1万
查看次数

Sed错误:替换表达式中的错误选项

我有一个配置文件(gpsd.default)包含具有以下格式的数据:

# If you must specify a non-NMEA driver, uncomment and modify the next line     
GPSD_SOCKET="/var/run/gpsd.sock"                                                
GPSD_OPTIONS=""                                                                
GPS_DEVICES="" 
Run Code Online (Sandbox Code Playgroud)

我用sed对文件进行了更改:

sed -i 's/^GPS_DEVICES="".*/GPS_DEVICES="dev/ttyUSB1"/' /etc/default/gpsd.default
or 
sed -i '4s/^.*/GPS_DEVICES="dev/ttyUSB1"/' /etc/default/gpsd.default
Run Code Online (Sandbox Code Playgroud)

上面的sed命令返回错误:

sed:替换表达式中的错误选项

因为新行在/其表达式中包含" ".

如何更新我的sed命令使其工作?

linux bash shell sed

6
推荐指数
1
解决办法
1万
查看次数

用于从gpsd守护程序中提取数据的libgps

我想使用libgps与gpsd守护进程交互.这就是为什么我已经实现了一个小测试应用程序,以便从特定卫星中提取值.

HOWTO页面上的文档告诉我们

棘手的部分是解释你从阻塞读取得到的东西.它很棘手的原因是你不能保证每次读取都会从守护进程中获取一个完整的JSON对象.它可以抓取一个响应对象,或多个,或一个的一部分,或一个或多个后跟片段.

根据文档的建议,PACKET_SET在执行任何其他操作之前,将检查掩码位.

#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <stdint.h>
#include <gps.h>
#include <pthread.h>

pthread_t t_thread;

struct t_args {
   unsigned int ID;
};

unsigned int status = 0;
int elevation;

int p_nmea(void *targs);

void start_test(void)
{
    struct t_args *args = malloc(sizeof *args);
    status = 1;
    args->ID = 10;

    pthread_attr_t attr;

    pthread_attr_init(&attr);
    pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
    if (pthread_create(&t_thread, &attr, (void *)&p_nmea, args) != 0)
    {
        perror("create: \n");
    }
}

int test_result(int * Svalue)
{
    int …
Run Code Online (Sandbox Code Playgroud)

c parsing gps json gpsd

6
推荐指数
1
解决办法
1060
查看次数

如何测试变量是否存在并已初始化

我必须执行一个函数,必须测试变量是否已在bash中正确定义,并且必须使用其关联值.

例如,这些变量在脚本顶部初始化.

#!/bin/bash

var1_ID=0x04
var2_ID=0x05
var3_ID=0x06
var4_ID=0x09
Run Code Online (Sandbox Code Playgroud)

我想调用名为test的脚本如下:

./test var1
Run Code Online (Sandbox Code Playgroud)

当前实现的功能是:

function Get()
{
     if [ $1"_ID" != "" ]; then 
         echo "here"
         echo $(($1_ID))
     else 
         exit 0 
     fi
}
Run Code Online (Sandbox Code Playgroud)

here即使我进入./test toto或其他什么,我也不明白为什么我会得到.

我是否需要使用特定命令,例如grep

variables bash shell

5
推荐指数
2
解决办法
2万
查看次数

测试两个变量是否同时为空

我想在相同的if条件下测试这两个变量.

目前我使用[[$ var]]来测试一个,但两个变量的相同功能不起作用.

为了做到这一点,我试过:

if [[ &var1 && &var2 ]]; then
or 
if [[ &ipAddress ]] && [[ &bcastAddress ]]; then
Run Code Online (Sandbox Code Playgroud)

有限制吗?

variables bash conditional-operator

3
推荐指数
1
解决办法
1736
查看次数

Bash 在变量中存储命令 PID 并终止进程

我想使用 shell 脚本来建立以太网连接。

我正在使用一个实现为的函数:

function connec()
{
    ip link set eth0 up
    sleep 5
    udhcpc -i eth0
    pid=$$
    echo $pid
    ps 
    kill -9 $pid
}
Run Code Online (Sandbox Code Playgroud)

但是,脚本返回:

743
743 root      2704 S    {script.sh} /bin/bash ./script.sh connect
767 root      2200 S    udhcpc -i eth0
Killed
Run Code Online (Sandbox Code Playgroud)

我在商店 767 而不是 743 中没有成功。我也尝试使用 $! 但在这种特定情况下,“echo $pid”返回 0。

variables bash kill process

3
推荐指数
1
解决办法
1万
查看次数

传递参数中的指针目标在签名方面有所不同

我已经阅读了类似的问题,但在这种情况下,我找不到能帮助我理解这个警告的问题.我正在尝试学习C的第一周,所以请提前道歉.

我收到以下警告并注意:

In function 'read_line':
warning: pointer targets in passing argument 1 of 'read_byte' differ in signedness [-Wpointer-sign]
   res = read_byte(&data);  
   ^
note: expected 'char *' but argument is of type 'uint8_t *'
 char read_byte(char * data) 
Run Code Online (Sandbox Code Playgroud)

在尝试编译此代码时:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <stdint.h>
#include <fcntl.h>
#include <unistd.h>

char read_byte(char * data) 
{
    if(fs > 0 )
    {
        int n = read(fs, data, 1);
        if (n < 0)
        {
            fprintf(stderr, "Read error\n");
            return 1;
        }
    }
    return *data; …
Run Code Online (Sandbox Code Playgroud)

c warnings pointers signedness

1
推荐指数
1
解决办法
2万
查看次数

如何在 shell 脚本中获取文件名的第一个扩展名?

是否有内联命令可用于获取文件的第一个扩展名?

我使用以下命令来获取最新的:

FILE="filename.tar.bz2"
EXT="${FILE##*.}"
echo "EXT = ${EXT}"
Run Code Online (Sandbox Code Playgroud)

返回

EXT = bz2
Run Code Online (Sandbox Code Playgroud)

是否有类似的命令来隔离“tar”?

bash shell cut sh

1
推荐指数
1
解决办法
56
查看次数

free()抱怨无效指针

我试图通过连接一些值来逐个构建一个字符串,以获得类似的东西:

|0x0F64:0x0063:0x1A|0x7CC4:0x0073:0x1A|0x0A51:0xA29A:0x9C|0xD49D:0x0058:0x10|
Run Code Online (Sandbox Code Playgroud)

我想使用动态变量,因为NB_ELEMENT可能会得到改进.

#include <stdio.h>
#include <stdlib.h>

#define NB_ELEMENT 4
typedef struct
{
   unsigned short  u16Val1;
   unsigned short  u16Val2;
   unsigned char   u8Val3;
}stElement;

stElement element[NB_ELEMENT] = {{ 0 }};

int main()
{
    element[0].u16Val1 = 3940;
    element[0].u16Val2 = 99;
    element[0].u8Val3 = 26; 

    element[1].u16Val1 = 31940;
    element[1].u16Val2 = 115;
    element[2].u8Val3 = 26;           

    element[2].u16Val1 = 2641;
    element[2].u16Val2 = 41620;
    element[2].u8Val3 = 156; 

    element[3].u16Val1 = 52429;
    element[3].u16Val2 = 88;
    element[3].u8Val3 = 16;

    char *str = malloc(NB_ELEMENT * sizeof element);

    snprintf(str, sizeof element, "|0x%04x:0x%04x:0x%x\n",element[0].u16Val1,
                                                      element[0].u16Val2, …
Run Code Online (Sandbox Code Playgroud)

c string printf concatenation

0
推荐指数
1
解决办法
92
查看次数

解析来自 UDP 套接字的 recvfrom() 消息的意外行为

目前正在使用 UDP 套接字,我被困在试图了解以下情况。

接收缓冲区定义如下:

char buf[1024];
...
memset(&buf, 0, sizeof(buf));
Run Code Online (Sandbox Code Playgroud)

& 通过调用 recvfrom() 完成

size = recvfrom(sockdf, buf, sizeof(buf), MSG_WAITALL, (struct sockaddr *) &rx, (socklen_t *)&len);
Run Code Online (Sandbox Code Playgroud)

我从远程获取这些数据,使用 Wireshark 确认:

01 fe 00 04 00 00 00 21 53 53 53 5f 54 54 54 54 5f 30 31 32 33 34 35 36 37 10 fe 00 10 02 ac ca fe 00 00 00 00 00 00 00 00
Run Code Online (Sandbox Code Playgroud)

使用一个简单的for循环来识别缓冲区内容,我得到:

for (i = 0; i < size; …
Run Code Online (Sandbox Code Playgroud)

c printf buffer gdb recvfrom

0
推荐指数
1
解决办法
61
查看次数