j****i 发帖数: 305 | 1 【 以下文字转载自 Apple 讨论区 】
发信人: jacobi (jacobi), 信区: Apple
标 题: Any idea on using drand48_r in mac?
发信站: BBS 未名空间站 (Tue Jul 19 18:50:11 2005), 转信
I need to use drand48_r() in mac, but the gcc compiler in mac (4.0) doesn't support this. This function works fine in linux machines using gcc-3.2. |
|
a*****i 发帖数: 4391 | 2 【 以下文字转载自 Linux 讨论区 】
发信人: ayanami (螃蟹@FROSTSHOCK PWNS YOU!!11!), 信区: Linux
标 题: 问一个cross compilation的问题
发信站: BBS 未名空间站 (Tue Feb 13 15:22:22 2007), 转信
I would get this error message:
/opt/crosstool/powerpc-405-linux-gnu/gcc-3.4.4-glibc-2.3.5/lib/gcc/
powerpc-405-linux-gnu/3.4.4/../../../../include/c++/3.4.4/cstdlib:103:
error: `::malloc' has not been declared
Anyone has clue of how to fix this?? |
|
s******y 发帖数: 68 | 3 在UNIX下GCC编译C程序fork.c生成a.out, 大多数时候正常工作.
但个别时候, 出现如下异常情况. 什么原因. 谢谢
$ gcc fork.c -o a.out -pthread
$ ./a.out
./a.out |
|
r****t 发帖数: 10904 | 4 想把一些gcc-2.95下面编译没问题的程序用gcc-3.3/3.4 编译
在一个include的地方遇到问题: #include "auto_ptr_array.h",估计boost流行以前很
多人用的,是SGI的STL headers改过来的,里面开头
#include "stl_algobase.h"
#include "stl_..."
一共7,8个头文件编译的时候都找不到(no such file)。locate一下发现在
/usr/include/c++/3.3/bits/stl_algobase.h
/usr/include/c++/3.4/bits/stl_algobase.h
/usr/include/c++/4.1.2/bits/stl_algobase.h
/usr/include/g++-3/stl_algobase.h
这些都不是在g++编译时候的默认搜索路径里面。我也试过加上 -I/usr/include/g++-3
/ 编译,但是稍后会有error: size_t not declared in namespace `std'. 把code
port到gc |
|
w******g 发帖数: 67 | 5 I am working on transfer a MPI program from my laptop to one computing
cluster("Docker"). The system specifications are as following:
my laptop
Dell d810 Intel CPU
GCC 4.1.2
"Docker" cluster:
10 nodes , each node runs with 2 AMD64 processors and CentOS4.4
Linux system.
GCC 3.4.6
The problem is that I can compile the program successfully on the cluster.
But when running, it crashes with error(it crashes when I run it on one
processor)
*** glibc detected *** malloc(): memory corruption: 0x00000000 |
|
c***d 发帖数: 996 | 6 ☆─────────────────────────────────────☆
blogrance (AM) 于 (Fri May 25 10:22:34 2007) 提到:
系统:学校服务器redhat linux
GCC compiler version 3.23...
问题:MAKE 产生 core dump, error 139. 狗狗了半天,说有可能是compiler 版本太
老,或者是swap 空间不够,检查swap空间足够,GCC版本学校控制。程序是一个1000行
左右的数学运算。
另外一个可能相关的问题是,如果更改程序里的打印语句,程序输出文件显示程序运行
到不同的地方。
比如:
把
printf("test 2\n");
comment 掉,之前输出文件可能显示
。。。。。
test 4
但是更改之后,输出文件显示程序中止在不同地方,甚至有时候是一个打印语句的中间。
比如:
printf("check again\n");
输出文件最后一行显示
check
again is missing...
哪位大拿对这个error 139 有研究,指点一下,不胜感谢, |
|
t****t 发帖数: 6806 | 7 你gcc啥版本? 我刚在这里试了试用bitset, 挺好的
我也是gcc/cygwin, 3.4.4 |
|
l*********i 发帖数: 483 | 8 偶有个做计算的c写的函数库,定义的时候所有的变量类型都是double,但是
因为计算精度的问题,现在想把所有的变量都变成long double,除了挨个改源文件
之外,有没有什么简单点的方法呢(比如compile的时候有没有什么特殊的flags
之类能干这个的)?
系统是64位的linux, compiler有gcc 4.2和icc 10.1(不知道是什么,貌似
gcc比icc慢不少,所以最后可能会用icc) |
|
l*********i 发帖数: 483 | 9 如下一段code:
int PrecFunc(void *params)
{
double m1 = *(double *)params;
double m2 = *(double *)(params+sizeof(double));
double M = *(double *)(params + sizeof(double)*2);
double mu = *(double *)(params + sizeof(double)*3);
double eta = *(double *)(params + sizeof(double)*4);
double m = *(double *)(params + sizeof(double)*5);
... ...
}
如果存成.c文件用gcc编译可以通过,但是存成.cpp文件用g++编译就会说
"error: pointer of type ‘void *’ used in arithmetic"
因为用到现有的一个函数库,PrecFunc的输入参数类型必须是void *,应该
怎么样修改才能在gcc和g++下编译都通过呢? |
|
D*******a 发帖数: 3688 | 10 有两台机器:
A: P4-2.6GHT, 512M memory, Fedora 8, GCC 4.1.2
B: P4-2.8GHT, 1.5G memory, Mac OS X 10.5.2, GCC 4.0.1 (Xcode)
用-O3编译同一个程序(min cut graph partitioning using simulated annealing)
运行时间差很远
A只用了2:21,但是B却用了5:51
按道理B应该运算能力更强,可是实际上却差那么远,怎么解释呢? |
|
s********1 发帖数: 581 | 11 如何修改linux PATH 以便programming?
本人分别装了红旗linux 6.0 和 redhat 5.0. 系统中自带gcc 和 library.
(1) 请问如何才能修改linux PATH 以便programming?
(2) Linux 有修改PATH 的graphic interface 吗?
(3) gcc 和 library 分别在 usr/ 下面的多个 directory, 是否所有的PATH 都要加,
还 是只加 usr/?
(4) 一般linux/unix 中的用户编的program file都放在那个dir下?是usr/name/下吗? |
|
n**d 发帖数: 9764 | 12 Installed a g++ in WinXP. Is the version old or still good enough?
bash-2.02$ g++ -v
Reading specs from C:\cygnus\CYGWIN~1\H-I586~1\bin\..\lib\gcc-lib\i586-
cygwin32\
egcs-2.91.57\specs
gcc version egcs-2.91.57 19980901 (egcs-1.1 release) |
|
t*******g 发帖数: 1301 | 13 别人的C 程序,写好了,那过来编译使用
make编译时出现一下问题:
...........................
..........................
gcc -O3 -Wall -ansi -I. -I/include -c -o main.o main.c
gcc struct.o read_array.o make_graph.o get_options.o edge_list.o write_block
.o cluster.o main.o -o gcluster -static -L/lib -lgsl -lgslcblas -lm
/usr/bin/ld: cannot find -lgsl
collect2: ld returned 1 exit status
make: *** [gcluster] Error 1
%%%请教该如何解决?
thanks |
|
k****e 发帖数: 100 | 14 gsl 由一个工具 gsl-config 能告诉你怎么配置gcc
gcc/g++ `gsl-config --libs` test.cc |
|
t****t 发帖数: 6806 | 15 很难弄的, 你要让gcc能看到gsl的include file, 还要让gcc/ld能看到gsl的library
file
你找你装好的gsl, .h文件在什么地方? 比如说有/home/me/GSL/include/gsl/gsl_blas
.h
那你可以试试
CPPFLAGS=-I/home/me/GSL/include
你装好的gsl, .a或者.so在什么地方? 比如有/home/me/GSL/lib/libgsl.a, 你可以试试
LIBS=-L/home/me/GSL/lib
所以你可以写
env CPPFLAGS=-I/home/me/GSL LIBS=-L/home/me/GSL/lib make
但是这都不一定有用, 取决于这个作者的makefile是怎么写的
所以我说一两句话说不清楚, 基本上要看到你的机器才行, 我也没用过gsl, 只是对
UNIX熟一点 |
|
r****t 发帖数: 10904 | 16 咱好人做到底,其实也不难,gcc 的基本用法花半个小时入个门,Makefile 也不用完全懂,至少装个程序该没问题。
你把 Makefile 开头部分改成这样再看看你能不能通过那一步,之后你还有好几个 library 要装,我建议你都装在 /home/me/usr/ 里面:
# USER OPTIONS
# the full path to where to install the library, headerfiles and docs.
# if you use a relative path, you have to modify the Makefile in the
# $(PREFIX)/doc/examples yourself.
PREFIX = /home/me/GMRF
# what to call the library
GMRFLibNAME = GMRFLib
# select compilers and optimized compiler-options. add -march=.... etc
yourself
CC = gcc
FC = gfortr |
|
h*******s 发帖数: 11 | 17 RHEL 5.2 provides both gcc 4.1.2 and gcc 3.4.6. |
|
r****t 发帖数: 10904 | 18 some old code by someone from about 199x, compiled with gcc-2.95. is std:max
_element around at that time?
How hard would it be to port this code to gcc-4.3? I am getting more and
more template-related compiling errors. |
|
r****t 发帖数: 10904 | 19 对,就是没有 declare, 但是老的 gcc 没问题,新的 gcc 就报错了,加了几个 empty
function, 看起来是编译过了。 |
|
r****t 发帖数: 10904 | 20 我那办法不顶用,我在别的地方想要 override mynamespace::read, 就出现错误
error: redefinition of ‘template void mynamespace::read(hid_....
I think I only decleard it, not define it, but I need to check...
那怎么老 gcc 就可以?这段本意是定义个 namespace, 里面 reference 到一个还没
declare 的 member function, 然后用户写程序根据需要来实现这个 member function
, 这在 gcc-2.95 work, 现在就不能用了,那么现在是怎么处理这种问题的呢?总不至
于都是用 subclass + virtual 吧? |
|
r****t 发帖数: 10904 | 21 虽然我手里现在没有 gcc-2.95, 但是从我以前 compile 这个 code 的经验,在 gcc-2
.95 下面是这样是可以 compile 和运行的。 |
|
w*******e 发帖数: 285 | 22
谢谢指导,看完这两篇文章清楚多了,尤其是第一个pdf文件。
不过普通的VC和GCC的编译器会是怎么样的呢?是像文章里说的那样吗?
还有第二个link里面说到的scoped static init不safe,但是我发现在vc和gcc下面,
如果
某个初始化函数像那个ComputeSomethingSlowly()一样非常慢。那么其他的thread都会
在不进入这个函数的同时被lock住,然后等第一个thread执行完
ComputeSomethingSlowly()再进一步。这个是不是并不是标准C++保证的,但是每个编
译器基本上都这么做? |
|
r*********r 发帖数: 3195 | 23 举个不相关的例子. 老版本的 gcc 是不把 .bss 段里的东西清零的, 好像 3.x 以后就
自动清零了.
所以加了一个优化项 -fno-zero-initialized-in-bss. 用和不用这个优化项显然结果
不同.
gcc 刚升级时, 有些kernel code因为这个东西编译不过去. |
|
b******a 发帖数: 215 | 24 嵌入式系统的CPU,对aligment要求很严。编译器是gcc。
函数要求传入一个(void *str)进去,然后函数里面会每2个byte读到一个local的变量
里面。
现在的问题是如果设一个变量如: char *mystr="this is my str"; 然后把mystr传入
函数,有时间mystr不是按照2或者4来对齐的,这样函数内部就会出错,导致系统崩溃。
因为一般情况下,char是没法对齐的。请问gcc下面有没有什么编译选项可以强制每个
变量都是按照 2或者4来对齐的?程序要求不能用pragma之类的语句来对齐。
谢谢了。 |
|
X****r 发帖数: 3557 | 25 gcc 的这类编译开关多半是目标体系结构相关的,你得查gcc 手册里有关你这个体系结
构的部分了。 |
|
b***y 发帖数: 2799 | 26 ☆─────────────────────────────────────☆
Viterbi (长岛扛霸的) 于 (Tue Sep 6 18:06:05 2005) 提到:
I'm using C under Linux for the first time. I found something strange. When I
try to use gcc to link (no problem for compile), it gives me the following
error message:
prime_para.o(.text+0xd0): In function `main':
collect2: ld returned 1 exit status
but if I use g++ instead, such problem disappeared.
Then I go on and use some other function, now both gcc and g++ fail, anybody
know why? Thanks a lot!
☆── |
|
s*****k 发帖数: 604 | 27 在子类 Deriv中使用父类的数据成员numArray就会出错,
提示的错误信息是numArray没有declare.
改成 Base<_Tp>::numArray 就编译通过了。
请问这是为什么?
我用的编译器是 gcc 3.4.4 (cygwin) 和 gcc 4.2.4 (ubuntu)
#include
template
class Base
{
protected:
_Tp numArray[3];
Base()
{
numArray[0] = static_cast<_Tp>(1);
numArray[1] = static_cast<_Tp>(11);
numArray[2] = static_cast<_Tp>(111);
};
};
template
class Deriv: public Base<_Tp> {
public:
Deriv() {
/* Why the followi |
|
g****y 发帖数: 436 | 28 昨天不小心把
/usr/lib/include/c++
里面的4.3文件夹删除了,现在什么c++都编译不了。后来用了
apt-get install build-essential
但是还是没有能够恢复,再后来试了
apt-get remove gcc
apt-get install gcc
还是不行,请问如何恢复呢?谢谢! |
|
t****t 发帖数: 6806 | 29 vfedora(156-10:38pm)$ gcc t2.c
vfedora(157-10:38pm)$ a.out
20 50 500
vfedora(158-10:38pm)$ gcc -O2 t2.c
vfedora(159-10:38pm)$ a.out
20 50 123094864 |
|
t****t 发帖数: 6806 | 30 vfedora(176-10:46pm)$ gcc -m32 t2.c
vfedora(177-10:46pm)$ a.out
20 50 200
vfedora(178-10:46pm)$ gcc -m32 -O2 t2.c
vfedora(179-10:47pm)$ a.out
20 50 134513737
四种编译开关,四个结果,你说出题的人是不是脑残 |
|
d****p 发帖数: 685 | 31 Thanks for help. So I kind of think Solaris C++ compiler is not perfectly C+
+ compliant to support BOOST - I already turned stl4port option on.
I googled this issue but could not find any helpful clues. Maybe the
compiler I was using is not up to date (SunOS C++ 5.5).
Now it seems GCC is the ideal compiler in term of C++ standard compliance.
VC++ compiler is way not too slack while the solaris one too harsh. But
regarding code optimization and compilation speed, GCC sucks :-(
When developing cr |
|
k****5 发帖数: 546 | 32 #include
using namespace std;
class A{
int a;
public:
void foo(){
cout << "foo in A" << a <
}
};
int main(){
A * Ap;
Ap->foo();
return 0;
}
gcc 4.2.4 输出是 “foo in A1474660693",A后面这个东西每个机子不会一样,但应
该连着run几次不会变,貌
似Ap指到了内存里面A的prototype,这是gcc的行为,还是c++标准? |
|
F*******i 发帖数: 190 | 33 the compiling of the numpy module complains:
/usr/bin/ld: cannot find -lptf77blas
I am wondering whether there is any option to add for the gcc search path?
the current gcc search path like:
-L/usr/local/lib
How can I add another search path like -L/my/local/lib ?
many thanks! |
|
w***g 发帖数: 5958 | 34 gcc那个支持的平台多,软件兼容性好。如果是intel的cpu,那么还是intel的那个编译
出来的代买快一点。Intel有个math kernel library,那个东西貌似也可以在gcc上用,
比ATLAS快不少。 |
|
e*t 发帖数: 9 | 35 最近需要在 linux 64bit 下用 gcc 编译 c 程序。其中用到 math library,结果在
realse 5 的机器下编好的程序,在 release 4 下出错。我想在 release 5 下不使用
默认 -lm,而是指定一个兼容两个版本的库,不知行否?
我想在 gcc 里用
-l/my_dir/libm.so
这样对不对?
如果我想把数学库静态链接进去,该怎么写?新手急问,包子感谢!!! |
|
t****t 发帖数: 6806 | 36 yes, i tried your original post on gcc-4.4 and it passed.
gcc-4.1 rejected it, but accepts ::A::Foo().
member function Foo, like ::A::Foo() |
|
d****p 发帖数: 685 | 37 Your answer is basically right - it depends on map implementation.
So it may cause bus error on VS/Windows or GCC/Mac but run fine on Solaris
or GCC/Linux.
What happened is:
1. after exiting main, the static map object is gonna be destructed
2. since one node in the map is a shared pointer of Foo, the shared pointer'
s ref count is decremented (to zero), and ~Foo called.
3. inside ~Foo, the erase tries to re-decrement the shared pointer's ref
count - since it is already 0, no further action (so |
|
X****r 发帖数: 3557 | 38 gcc -O3 (gcc 4.2.4)
_Z4funcv:
.LFB3:
movl $1, %eax
movl $1, global_var(%rip)
ret
(I added 'return x;' to avoid x being optimized away entirely) |
|
|
N***m 发帖数: 4460 | 40 这个优化是可能出不一样的结果,我以前遇到过。
bug; |
|
y***d 发帖数: 2330 | 41 这说明这个优化是不对的,优化怎么也得同样结果才优化吧... |
|
f*******y 发帖数: 55 | 42 问题出在 unsigned int x上吧。想想,-x || x 可不就是1么?它又不知道signed int
的范围是多少。 |
|
t****t 发帖数: 6806 | 43 looks really like a bug. send a bug report?
bug; |
|
t****t 发帖数: 6806 | 44 why? if x==0 then (-x || x)==false of course.
int |
|
N***m 发帖数: 4460 | 45 不清楚。我搞数值计算的,这样的情形遇到过几次,一般跟优化级别有关。
因为毕竟是优化,有可能优化错了,所以没觉得是bug。
不然的话,岂不是缺省就用optimization算了。 |
|
|
|