我目前正在努力连接一个简单的库。
我从这里编译并成功安装了G729实现,如下所示:
cmake . -DCMAKE_INSTALL_PREFIX=/usr
make
make install
当我检查符号是否存在时,它们是否存在:
nm /usr/lib64/libbcg729.so | less
....
0000000000001fb8 T _init
000000000000de40 T initBcg729CNGChannel
00000000000046dd T initBcg729DecoderChannel
000000000000f5c6 T initBcg729DTX
我对以下的行为感到惊讶。
当我运行这个
#include<stdio.h>
int main()
{
extern int a;
printf("%d\n", a);
return 0;
}
int a=20;
输出:20( gcc Linux 32位,这似乎不错)
但是当我在main()中声明变量main()时
#include<stdio.h>
int main()
{
extern int a;
int a=20;
printf("%d\n", a);
return 0;
}
我正在尝试从我的64位英特尔机器上的源代码编译linux内核0.0.1。只是为了填充boot和main,我必须修改所有的makefile以获得32位编译。
因此,这是make的输出:
In file included from traps.c:7:0:
../include/string.h:128:22: warning: conflicting types for built-in function ‘strchr’
extern inline char * strchr(const char * s,char c)
^
../include/
我正在尝试分析一个C程序的预处理阶段。下面是一个简单的计算圆面积的C程序。
#include<stdio.h>
#define PI 3.14
float area_circle(int r) //function to calculate area
{
float ar;
ar=PI*r*r;
return ar;
}
main() //main function
{
int rad;
float area;
printf("Enter the radius of circle: ");
我最近下载了链接中提到的代码。我的GCC版本是4.1.2。在console中开始出现以下错误之前,编译过程至少进行了一个小时。
LLVM支持声明我需要使用gcc44-c++,这在我们的机器中是不可用的:
Red Hat Enterprise Linux Server release 5.5 (Tikanga)
# yum install gcc44-c++
Loaded plugins: security
ppsd-nonprod-base
我试图在windows和linux机器上的套件中添加测试功能。在linux机器上,我希望添加真正的函数,而在windows机器上,我希望添加虚拟的UnsupportedFunction,以便在两个环境中都有相同数量的函数。
我有以下代码
void UnsupportedFunction(struct1* test)
{
//dummy function in C
}
// following functions defined else where and gets added only if its linux box
#if ENV_LINUX
extern void linuxOn
我有一个从源代码构建llvm/clang3.42的脚本(用configure+make)。在ubuntu14.04.5LTS上运行平稳。当我升级到ubuntu17.04时,构建失败了。
这是建筑脚本:
svn co https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_342/final llvm
svn co https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_342/final llvm/tools/clang
svn co https://llvm.org/svn/llvm-project
我试图在somedriver_cardSpecific.c中定义一个结构数组,在somedriver.h中声明它,然后在somedriver.c中使用它。但是我在somedriver.c中得到了一个编译错误
error: array '__mod_i2c__somedriver_idtable_device_table' assumed to have one element [-Werror]
extern const typeof(name) __mod_##type##__##name##_device_table
in expansion of macro '
我正在逐步了解Linux中的Mono开发。我正在尝试调用Linux C库。理论上,会告诉我如何做到这一点,但是当我在Fedora2.2.2(Fedora13)中输入下面的代码时,我在"private static extern int getpid();“中得到了一个"Parsing Error (CS8025)”。此外,帮助系统无法工作。
using System;
using System.Runtime.InteropServices;
[DllImport("libc.so")]
private static extern int getpid();
当使用G++ (例如Linux上的4.5版)时,有人能解释一下如果用户为C/C++混合系统写一个头文件会发生什么/可能发生什么吗?
#ifdef __cplusplus
extern "C" {
int myCPPfunc(some_arg_list....); /* a C++ function */
}
#endif
但在这里,myCPPfunc()是一个普通的C++函数,里面有一个def类--也就是说,它被错误地标记为C函数。
这会有什么影响?
每当我尝试用IOStream编译一个C++文件时,我都会得到这个错误。我已经尝试重新安装了GCC G++ ( 4.6和4.9)和cpp。它没有帮助(或者可能我没有用正确的方法)。如何修复此错误
In file included from /usr/include/c++/4.9/bits/localefwd.h:40:0,
from /usr/include/c++/4.9/ios:41,
from /usr/include/c++/4.9/ostream:38,
from /usr/include/c++/4.9/
我知道正常的方式,我试过了,但似乎行不通。
在linux/net/sched/sched_htb.c中,我定义了变量:
unsigned int queuelength;
EXPORT_SYMBOL(queuelength);
还有一些关于变量的动作,不重要。
在linux/net/ipv4 4/tcp_dctcp.c中,
extern unsigned int queuelength;
错误随net/内置.o:
In function `dctcp_update_alpha':
linux/net/ipv4/tcp_dctcp.c:230: undefined reference t
在LINUX中编译C程序时,我得到了foll。错误:
stream.h:1123: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'int'
stream.h:1124: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'mblk_t'
stream
这是我的main.cpp。
#include <thrift/protocol/TProtocol.h>
#define <sys/wait.h>
int main(int argc, char** argv) {
return 0;
}
当我运行g++ main.cpp时,我得到:
In file included from main.cpp:2:0:
/usr/include/x86_64-linux-gnu/sys/wait.h:148:52: error: ‘siginfo_t’ has not been declared
extern int wai
我已经发布了用gcc6.3 和构建llvm3.42的失败。我分别发布了clang4.0从源代码构建llvm3.42的失败,因为这些都是不同的开发人员社区。下面是我使用的脚本:
svn co https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_342/final llvm
svn co https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_342/final llvm/tools/clang
svn co https://llvm.org/svn/llvm-project/compiler-rt/
我知道一个带有初始化的变量是一个定义,不管它是否是extern。但是,既然extern int x=1;是一个定义,为什么编译器不抛出运行以下代码的重新定义错误?
//ok,no error
int x;
extern int x=1;
int main()
{
}
//however,this is an error
extern int x=1;
int x;
int main()
{
}
为什么会发生这种事?有什么不同吗?
Update:您是我用VS 2013编译的right.When,在linux上没有使用gcc的error.Now,并且得到了一个与我预期的一样的重新定义错误。
正如
我正在开发一个linux上的rpc示例程序。当我试图编译我的远程过程时,我得到了这个错误:
msg_proc.c:10:7: error: conflicting types for ‘printmessage_1’
In file included from msg_proc.c:8:0:
msg.h:22:15: note: previous declaration of ‘printmessage_1’ was here
这是我用来编译的命令:
cc msg_proc.c msg_svc.c -o msg_server -lnsl
下面是我的头文件和过程文件:
/*msg.h
*
*
为什么这段代码不编译?(x86_64,Ubuntu )
main.rs
#![feature(lang_items)]
#![no_std]
#![no_main]
extern crate libc;
#[no_mangle]
pub extern "C" fn main(_argc: isize, _argv: *const *const u8) -> isize {
// Since we are passing a C string the final null character is mandatory
const HELLO: &&