尝试在x64 RedHat环境中编译x86 C程序

时间:2019-07-12 16:53:49

标签: c

我有一堆在32位环境中使用的C程序,现在我需要在64位环境中对其进行编译。

大家好,

我是COBOL开发人员。

在我所在的公司,我们正在将Linux操作系统从32位迁移到64位版本。

除了C程序,我们几乎做了所有事情。

在我们的makefile文件中,基本上我们有“ gcc -c”,我添加了-m64。

某些程序可以很好地编译,而其他程序则不能。

当我们的cobol程序调用这些c子例程时,我们会收到“分段错误(内核已转储)”错误消息。

当我在32位env上编译C程序时,没有任何警告消息,但是在64位env上有警告。

/* mgetdat.c */
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <time.h>

int mfqend ()
{
    char *Jobname;
    char *Jobno;
    char str[200];
    Jobname = (char*)getenv("JOBNAME");
    if(Jobname == NULL)
        Jobname = "JobUnknown";
    Jobno = (char*)getenv("JOBNO");
    if(Jobno == NULL)
        Jobno = "JobnoUnknown";
    sprintf(str,"/tmp/%s.%s",Jobname,Jobno);
    unlink(str);

    return 0;
}

这是我收到的以下警告:

/exp/prod/src>make mfqend
cc  -c -m64 mfqend.c 2>&1 | tee mfqend.err
mfqend.c: In function âmfqendâ:
mfqend.c:12:12: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
  Jobname = (char*)getenv("JOBNAME");
            ^
mfqend.c:15:10: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
  Jobno = (char*)getenv("JOBNO");
          ^
cp -f mfqend.o mfqend.o2
ar ru /public/prod/lib/libpubbatsub.a mfqend.o mfqend.err
rm -f mfqend.o mfqend.o2 mfqend.err 

由于我对C语言的了解不多,因此我的想法用光了。

如果有人对可以做什么有任何想法,我将不胜感激...

0 个答案:

没有答案