小编j4x*_*j4x的帖子

Cmake target_link_libraries没有链接我的库

我会开始说我在Cmake问题上几乎完全愚蠢.

我有以下CMakeLists.txtKdevelop 4.1项目:

project(uart)

find_package(KDE4 REQUIRED)
include (KDE4Defaults)

include_directories( ${KDE4_INCLUDES} ${QT_INCLUDES} src/include src/include/QSerialDevce )

add_subdirectory(doc)
add_subdirectory(src)
add_subdirectory(icons)

link_directories(/usr/lib)

find_library(SERIALDEVICE_LIB qserialdeviced)

add_executable(uart ${uart_SRCS})
target_link_libraries(uart ${SERIALDEVICE_LIB})
Run Code Online (Sandbox Code Playgroud)

当我尝试构建我的项目时,我看到:

uart/build> make -j2
-- Found Qt-Version 4.6.3 (using /usr/bin/qmake-qt4)
-- Found X11: /usr/lib64/libX11.so
-- Found KDE 4.5 include dir: /usr/include/kde4
-- Found KDE 4.5 library dir: /usr/lib64/kde4/devel
-- Found the KDE4 kconfig_compiler4 preprocessor: /usr/bin/kconfig_compiler4
-- Found automoc4: /usr/bin/automoc4
CMake Error at CMakeLists.txt:16 (add_executable):
  add_executable called with incorrect number of arguments


CMake Error: Attempt …
Run Code Online (Sandbox Code Playgroud)

c++ linux linker kdevelop cmake

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

ANSI-C:打印十进制int的最大字符数

我想知道是否这是一种确定打印小数的最大字符数的简单方法int.

我知道<limits.h>包含了诸如定义INT_MAX是说,最高 int可以假设,但它不是我想要的.

我希望能够做到这样的事情:

int get_int( void )
{
    char draft[ MAX_CHAR_OF_A_DECIMAL_INT ];

    fgets( draft, sizeof( draft ), stdin );
    return strtol( draft, NULL, 10 );
}
Run Code Online (Sandbox Code Playgroud)

但是如何以MAX_CHAR_OF_A_DECIMAL_INT便携和低调的方式找到价值呢?

谢谢!

c string int type-conversion

14
推荐指数
3
解决办法
6964
查看次数

C++全局extern"C"朋友无法访问命名空间类的私有成员

请考虑以下代码:

#include    <iostream>

using namespace std;

extern  "C"
void    foo( void );

namespace   A
{
    template< int No >
    class   Bar
    {
    private:
        friend  void    ::foo( void );

        static void private_func( int n );
    };

    template< int No >
    void    Bar< No >::private_func( int n )
    {
        cout << "A:Bar< " << No << ">::private_func( " << n << " )" << endl;
    }
}

extern  "C"
void    foo( void )
{
    A::Bar< 0 >::private_func( 1 );
}

int main( …
Run Code Online (Sandbox Code Playgroud)

c++ templates namespaces extern

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

已知大小typedefed数组的c ++函数模板特化

请考虑以下代码:

#include    <iostream>
#include    <typeinfo>


template< typename Type >
void    func( Type var )
{
    std::cout << __FUNCTION__ << ": var = " << var << " [" << typeid( var ).name( ) << "]." << std::endl;
    std::cout << "->    var is SCALAR. Size = " << sizeof( Type ) << std::endl;
}

#if 1
template< typename Type >
void    func( Type * var )
{
    std::cout << __FUNCTION__ << ": var = " << var << " [" << …
Run Code Online (Sandbox Code Playgroud)

c++ templates sizeof template-specialization

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

C++:如何防止模板专门化指针?

我开始道歉,如果我是愚蠢的,如果它是如此明显,找不到答案.

我已经看过几十页讨论指针参数的特定模板专业化.

但是,我希望能够防止模板专门化指针参数,但我无法弄清楚如何做到这一点.

template< class T >
void function( T arg )
{
  //...
}

int main( )
{
    int i = 42;

    function( i );    // Ok
    function( &i );   // Die bastart with a compiler error!
}
Run Code Online (Sandbox Code Playgroud)

可能吗?

谢谢.

c++ templates pointers

7
推荐指数
3
解决办法
1804
查看次数

ld.so.1中的ELDK gcc链接器错误

我在一个Ubuntu盒子里安装了ELDK-3.1,效果很好.

在另一台运行64位OpenSuse 12.1的机器上,我克隆了ELDK安装,并且有一段时间它运行良好.

现在,当我尝试配置我的项目时,我看到:

configure: error: C compiler cannot create executables
See `config.log' for more details
Run Code Online (Sandbox Code Playgroud)

日志显示:

configure:3411: ppc-linux-gcc    conftest.c  >&5
/opt/ELDK-3.1/usr/bin/../lib/gcc-lib/ppc-linux/3.3.3/../../../../ppc-linux/bin/ld: warning: ld.so.1, needed by /opt/ELDK-3.1//usr/../ppc_8xx/lib/libc.so.6, not found (try using -rpath or -rpath-link)
/opt/ELDK-3.1//usr/../ppc_8xx/lib/libc.so.6: undefined reference to `_dl_lookup_versioned_symbol_skip@GLIBC_PRIVATE'
...
Run Code Online (Sandbox Code Playgroud)

该文件ld.so.1与目录位于同一目录中libc.so.6.

s -l /opt/ELDK-3.1//usr/../ppc_8xx/lib/ld.so.1 
lrwxrwxrwx 1 root root 11 Jan 31 11:43 /opt/ELDK-3.1//usr/../ppc_8xx/lib/ld.so.1 -> ld-2.3.1.so
Run Code Online (Sandbox Code Playgroud)

据我所知,我正确地定义了所有需要的环境,并尝试使用与Ubuntu框中完全相同的构建系统构建(项目是"自动化").

所以我写了一个脚本试图模仿我的automaked configure所做的一切:

#!/bin/bash


if [ ! -f confdefs.c ]; then
    cat > confdefs.c << EOF
/* confdefs.h */
#define …
Run Code Online (Sandbox Code Playgroud)

c gcc powerpc cross-compiling embedded-linux

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

我可以将arm-eabi与arm-elf混合使用吗?

我有一个产品,使用编译器(gnuarm GCC 4.1.1)编译bootloader和应用程序,生成"arm-elf".

引导加载程序和应用程序在链接描述文件的不同FLASH存储区中分隔.

该应用程序具有一个功能,使其能够调用引导加载程序(作为一个带有2个参数的简单c函数).

我需要能够升级世界各地的现有产品,并且我可以使用始终相同的编译器安全地完成此操作.

现在,我希望能够使用输出arm-eabi的新GCC版本来编译此产品应用程序.

一切都适用于新产品,其中应用程序和引导程序都使用相同的工具链进行编译,但现有产品会发生什么?如果我使用GCC 4.6.x和arm-none-eabi编译一个新的应用程序,我的应用程序是否仍然可以从旧的arm-elf引导程序中调用引导加载程序功能?


此外,与上述问题没有直接关系,我可以将用arm-elf编译的目标文件混合到用arm-eabi编译的二进制文件中吗?


编辑:

我认为很清楚我正在为裸机ARM7构建,如果它有任何区别......

embedded gcc arm eabi

6
推荐指数
2
解决办法
2614
查看次数

使用Automake在固定位置安装任意数据文件?

如何automake在我想要的地方安装任意数据文件?

我有一些文件需要放在特定的地方,例如" datafile1",在我的项目中,需要复制到" /usr/MyProduct/flash_memory".

  • " /usr/MyProduct/flash_memory"是一条我无法改变的绝对道路.
  • " datafile1"是一个二进制数据文件,不是由"构建" make,而只是需要复制make install.
  • 我无法忍受make dist.它需要被复制make install(这是一个很长的解释,因此,pelase只考虑这一点).
  • 我宁愿不使用install-hook,但更喜欢采用更优雅的方法(如果可能的话).

真的感谢!

automake autotools datadirectory

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

LPC1700不会从深度睡眠中醒来

我在LPC1754,59和68 + FreeRTOS + CMSIS 上运行固件.

我希望能够将微控制器置于最低功耗模式,但是:

  1. "睡觉"还不够.
  2. 一旦微控制器处于"深度睡眠","断电"或"深度断电",按下按钮(EINT3)就不能再唤醒它.

据我在" LPC17xx用户手册 "(第58,59页)中所读到的,我应该可以从EINT3唤醒到"断电"模式.

我错过了什么?是否在低功率时产生中断?怎么说?我应该做任何特定的东西才能生成它吗?

  • 为了简化,我从内部RC运行,因此PLL勘误不是问题.

编辑:

  • 实际上,我使用"GPIO中断"来处理P2中的几个引脚,而这些引脚又与EINT3共享.EINT3引脚本身(P2.13)未使用.请参阅下面的评论.

c++ embedded arm cortex-m3 lpc

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

采用继承类的C++非类型模板参数

我希望能够传递从DBMetaData另一个类的非类型模板参数继承的对象的引用,DBVar:

#include    <iostream>

class   DBMetaData
{
public:
    virtual const char  *description( ) const   = 0;
};

class   DBMetaData_NT
:   public  DBMetaData
{
public:
    const char  *description( ) const
    {   return  "Useless description."; }
};

#if DO_WHAT_I_WANT
template< const DBMetaData &Metadata >
#else
template< typename MetadataType,
    const MetadataType &Metadata >
#endif  // DO_WHAT_I_WANT
class DBVar
{
public:
    /// Descrição da variavel.
    const char  *description( ) const
    {   return  Metadata.description( ); }
};

DBMetaData_NT       _md_u1;

#if DO_WHAT_I_WANT
DBVar< …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance templates template-specialization

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