小编Bur*_*rak的帖子

C的交叉编译要求

我有一些关于编译C的基本知识,但需要回答一些通用的交叉编译问题.就我而言,我试图在我的Fedora Linux机器上交叉编译一个程序,该程序将在ARM单板计算机上运行.

  1. 我的第一个问题是关于标题.我已下载arm Linux工具包,它包含一个包含目录中的头文件,如stdio.h.当我交叉编译时,我是否应该使用这个"目标"包含目录而不是我的系统包含目录?或者可以指向我的系统包括目录,例如/ usr/include?(当我对它们进行区分时,这些头文件似乎有所不同.)

  2. 如果头文件不存在会发生什么.就我而言,我还计划在ARM板上使用cURL库.我可以简单地指向我下载的curl源包中的include目录而不用担心目标体系结构吗?如果是,这是否意味着我的第一个问题无关紧要?

  3. 假设我想静态链接到库.在发生这种情况之前,是否需要为目标ARM平台编译此静态库?或者我可以直接使用系统上安装的静态库(希望交叉编译过程能够处理业务)吗?

  4. 如果我决定动态链接到库,唯一的要求是目标系统将此库编译为ARM并安装在ARM板上的一个LD_LIBRARY_PATH目录中,我是否正确?

谢谢您的帮助.

c arm cross-compiling

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

使用Doctrine MongoDB ODM进行原子操作

我似乎无法使用以下查询.基本上,我正在尝试将消息文档添加到对话文档中,如下所示:

public function reply($conversationId, Message $message, $flush = true)
{            
    $this->dm->createQueryBuilder($this->class)
        ->field('archivers')->unsetField()
        ->field('repliedBy')->set($message->getUserId())
        ->field('repliedBody')->set($message->getBody())
        ->field('repliedAt')->set(new \DateTime())
        ->field('modifiedAt')->set(new \DateTime())
        ->field('messages')->push($message)
        ->field('id')->equals(new \MongoId($conversationId))
        ->getQuery()
        ->execute();

    if ($flush) {
        $this->dm->flush();
    }
}
Run Code Online (Sandbox Code Playgroud)

此回复方法以两种方式调用.首先是用户通过html表单发布消息,然后是由Android应用程序发出的REST调用.表单有效,但REST调用失败(其余实现使用带有FOSRestBundle btw的JMSSerializerBundle)...

我已经验证了代码被调用并且传递给方法的参数在两种情况下都是有效的,但由于某种原因,UnitOfWork.php中的commit()调用忽略了对文档的更改.见第413行,看看我的意思.

有没有人知道为什么会这样?

以下是我尝试过的其他方法:

首先,我添加了一个update()调用,该调用因"Catchable Fatal Error:类的对象...无法转换为/vendor/bundles/Symfony/Bundle/DoctrineMongoDBBundle/Logger/DoctrineMongoDBLogger.php第280行"中的字符串而失败.

public function reply($conversationId, Message $message, $flush = true)
{            
    $this->dm->createQueryBuilder($this->class)
        ->update()
        ->field('archivers')->unsetField()
        ->field('repliedBy')->set($message->getUserId())
        ->field('repliedBody')->set($message->getBody())
        ->field('repliedAt')->set(new \DateTime())
        ->field('modifiedAt')->set(new \DateTime())
        ->field('messages')->push($message)
        ->field('id')->equals(new \MongoId($conversationId))
        ->getQuery()
        ->execute();

    if ($flush) {
        $this->dm->flush();
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试的第二种方法是推送数组而不是对象:

public function reply($conversationId, Message $message)
{            
    $this->dm->createQueryBuilder($this->class)
        ->update()
        ->field('archivers')->unsetField()
        ->field('repliedBy')->set($message->getUserId())
        ->field('repliedBody')->set($message->getBody()) …
Run Code Online (Sandbox Code Playgroud)

doctrine mongodb symfony

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

标签 统计

arm ×1

c ×1

cross-compiling ×1

doctrine ×1

mongodb ×1

symfony ×1