Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Borland C++-5.5 (free) compiler does not install(?)

67 views
Skip to first unread message

Teemu Hiltunen

unread,
Apr 5, 2001, 2:48:09 AM4/5/01
to
Hello!

I'm trying to install Borland C++ 5.5 free compiler into my RH7 Linux
box but I can't get it to work. Running the installer brings a blank
dialog with "Prev", "Next" and "Cancel" buttons but nothing more.. and
pressing the buttons doesn't do anything and the dialog doesn't close. I
waited for more than 15 minutes (I read it in FAQ somewhere..) but still
nothing happens. From Wine application database I found out that Borland
C++ should work with Wine.. or am I wrong?

And even if I get BC++ 5.5 installed on Linux will it mean that I can
develop Win32 applications with it?


Teemu Hiltunen

Andreas Mohr

unread,
Apr 5, 2001, 7:15:26 AM4/5/01
to
Teemu Hiltunen <teemu.h...@uta.fi> wrote:
> Hello!

> I'm trying to install Borland C++ 5.5 free compiler into my RH7 Linux
> box but I can't get it to work. Running the installer brings a blank
> dialog with "Prev", "Next" and "Cancel" buttons but nothing more.. and
> pressing the buttons doesn't do anything and the dialog doesn't close. I
> waited for more than 15 minutes (I read it in FAQ somewhere..) but still
> nothing happens. From Wine application database I found out that Borland
> C++ should work with Wine.. or am I wrong?

Hmm, you might want to try native commctrl and comctl32 instead...

> And even if I get BC++ 5.5 installed on Linux will it mean that I can
> develop Win32 applications with it?

That could work, yes.

> Teemu Hiltunen

Andreas Mohr

g.p...@wanadoo.fr

unread,
Apr 5, 2001, 11:12:10 AM4/5/01
to
On Thu, 05 Apr 2001 09:48:09 +0300, Teemu Hiltunen
<teemu.h...@uta.fi> wrote:

>Hello!
>
>I'm trying to install Borland C++ 5.5 free compiler into my RH7 Linux
>box but I can't get it to work. Running the installer brings a blank
>dialog with "Prev", "Next" and "Cancel" buttons but nothing more.. and
>pressing the buttons doesn't do anything and the dialog doesn't close. I
>waited for more than 15 minutes (I read it in FAQ somewhere..) but still
>nothing happens. From Wine application database I found out that Borland
>C++ should work with Wine.. or am I wrong?

Check it again. You may find that it was Bc 3.1.

>And even if I get BC++ 5.5 installed on Linux will it mean that I can
>develop Win32 applications with it?

I don't think so. Bc 5.5 has a bug that prevents it to run under
Wine currently. That's the kind of feature that the Wine project
often rejects.

Gerard

Charlie Gibbs

unread,
Apr 5, 2001, 4:59:17 PM4/5/01
to
In article <3acc8ac...@news.freesbee.fr> g.p...@wanadoo.fr
(g.patel) writes:

Strictly speaking, the compiler (BCC32.EXE) and librarian (TLIB.EXE)
work just fine, and give results that are bit-for-bit identical
to the results when run on a real Windoze box. It's the linker
(ILINK32.EXE) that hangs. I've run many tests with both BCB4 and
the version 5 free download. Too bad - I'd love to get it running
under Wine myself.

BTW I don't believe in IDEs - I use the command-line tools
and makefiles - so installation wasn't an issue. I just copied
the executables, libraries, and include files into appropriate
directories on my Linux box.

--
cgi...@sky.bus.com (Charlie Gibbs)
Remove the first period after the "at" sign to reply.

Teemu Hiltunen

unread,
Apr 6, 2001, 1:34:37 AM4/6/01
to
Okay, thank you! Have you or anyone else had any luck with DJGPP+Win32
stuff in Wine? Or is there any chance to develop Win32 applications on Wine?

--teemu

Uwe Bonnes

unread,
Apr 6, 2001, 3:15:09 AM4/6/01
to
Teemu Hiltunen <teemu.h...@uta.fi> wrote:
: Okay, thank you! Have you or anyone else had any luck with DJGPP+Win32
: stuff in Wine? Or is there any chance to develop Win32 applications on Wine?

: --teemu


: g.p...@wanadoo.fr wrote:

:> On Thu, 05 Apr 2001 09:48:09 +0300, Teemu Hiltunen

Hallo Teemu,

please quote first, editinig away unneeed parts, then put your text.

Why don't you want to cross compile? Get Cygwin/Mingw for Linux and you can
run the compilation from the linux command line.
Start at http://sources.redhat.com/cygwin/

However I use mingw, as it doen't need a special runtime dll:

http://mingw.sourceforge.net/

Bye
--
Uwe Bonnes b...@elektron.ikp.physik.tu-darmstadt.de

Institut fuer Kernphysik Schlossgartenstrasse 9 64289 Darmstadt
--------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------

Teemu Hiltunen

unread,
Apr 6, 2001, 4:17:22 AM4/6/01
to
Uwe Bonnes wrote:

> Teemu Hiltunen <teemu.h...@uta.fi> wrote:
> : Okay, thank you! Have you or anyone else had any luck with DJGPP+Win32
> : stuff in Wine? Or is there any chance to develop Win32 applications on Wine?
>
> : --teemu
>
>
> : g.p...@wanadoo.fr wrote:
>
> :> On Thu, 05 Apr 2001 09:48:09 +0300, Teemu Hiltunen
>
> Hallo Teemu,
>
> please quote first, editinig away unneeed parts, then put your text.
>
> Why don't you want to cross compile? Get Cygwin/Mingw for Linux and you can
> run the compilation from the linux command line.
> Start at http://sources.redhat.com/cygwin/
>
> However I use mingw, as it doen't need a special runtime dll:
>
> http://mingw.sourceforge.net/
>
> Bye

I thank thee also. I'm currently trying to get mingw to work using
instructions at http://www.devolution.com/~slouken/SDL/Xmingw32/

--teemu

g.p...@wanadoo.fr

unread,
Apr 6, 2001, 6:18:19 AM4/6/01
to
On 05 Apr 01 12:59:17 -0800, "Charlie Gibbs" <cgi...@sky.bus.com>
wrote:
<snip>

> It's the linker
>(ILINK32.EXE) that hangs. I've run many tests with both BCB4 and
>the version 5 free download. Too bad - I'd love to get it running
>under Wine myself.

The following hack is fixing Bcb4. I don't know about bcc5.

Gerard

--- virtual.c.orig Tue Feb 27 03:09:18 2001
+++ virtual.c Fri Apr 6 12:11:41 2001
@@ -1045,6 +1045,8 @@

if (addr >= (void*)0xc0000000) return 0;

+ VirtualAlloc( 0x80000000, 0x1000, MEM_RESERVE | MEM_SYSTEM,
PAGE_EXECUTE_READWRITE );
+
base = ROUND_ADDR( addr );

/* Find the view containing the address */
@@ -1097,6 +1099,8 @@
info->BaseAddress = (LPVOID)base;
info->AllocationBase = (LPVOID)alloc_base;
info->RegionSize = size - (base - alloc_base);
+ if ((info->BaseAddress + info->RegionSize) > 0xc0000000)
+ info->RegionSize = 0xc0000000 - (DWORD)info->BaseAddress;
return sizeof(*info);
}

Mike Castle

unread,
Apr 6, 2001, 5:25:01 PM4/6/01
to
In article <9ajqdt$hdh$1...@sun27.hrz.tu-darmstadt.de>,

Uwe Bonnes <b...@elektron.ikp.physik.tu-darmstadt.de> wrote:
>please quote first, editinig away unneeed parts, then put your text.


Quoting first is not always appropriate. It should NEVER be used as a rule
of thumb. If I see a post where the first screen is nothing but quoted
material, I will assume that it is nothing more than a "Me too!" and ignore
it.

mrc

--
Mike Castle Life is like a clock: You can work constantly
dal...@ix.netcom.com and be right all the time, or not work at all
www.netcom.com/~dalgoda/ and be right at least twice a day. -- mrc
We are all of us living in the shadow of Manhattan. -- Watchmen

Charlie Gibbs

unread,
Apr 6, 2001, 9:26:24 PM4/6/01
to
In article <3acd968...@news.freesbee.fr> g.p...@wanadoo.fr
(g.patel) writes:

>On 05 Apr 01 12:59:17 -0800, "Charlie Gibbs" <cgi...@sky.bus.com>
>wrote:
><snip>
>> It's the linker
>>(ILINK32.EXE) that hangs. I've run many tests with both BCB4 and
>>the version 5 free download. Too bad - I'd love to get it running
>>under Wine myself.
>
>The following hack is fixing Bcb4. I don't know about bcc5.

<snip>

Bless you. It's a good thing you're that far away, or I'd climb
right through the phone line and kiss you. The patch works for
both BCB4 and BCB5. I compiled a couple of my programs under Wine
(including a private library into which I compiled half a dozen
other modules, also under Wine) and they work just fine. With the
exception of the few bytes that always change when I recompile a
program unchanged (object file date stamps, perhaps?), the BCB4
versions are bit-for-bit identical with the ones that were compiled
by the BCB4 development system on my Win98 box.

Looks like I can now build Windows programs under Wine (at least
under the 20010216 version). Thanks again!

Charlie Gibbs

unread,
Apr 6, 2001, 10:09:33 PM4/6/01
to
In article <d7cla9...@thune.mrc-home.org> dal...@ix.netcom.com
(Mike Castle) writes:

>In article <9ajqdt$hdh$1...@sun27.hrz.tu-darmstadt.de>,
>Uwe Bonnes <b...@elektron.ikp.physik.tu-darmstadt.de> wrote:
>
>>please quote first, editinig away unneeed parts, then put your text.
>
>Quoting first is not always appropriate. It should NEVER be used as
>a rule of thumb.

Actually, it's quite a good rule of thumb (at least according to
my understanding of the term). There may be exceptions to the
rule, but they're few and far between.

>If I see a post where the first screen is nothing but quoted
>material, I will assume that it is nothing more than a "Me too!"
>and ignore it.

So will I. That's why Uwe Bonnes included "editing away unneeded
parts" in his message quoted above. If I'm reading several messages
in a thread, I tend to skip over quoted text because I've just read
it in the previous message. If the reply consists of a single line
followed by several screenfuls of quoted text, I'll usually wind up
at the bottom, having missed the reply. At that point I'll assume
that either the message got away from the poster before he had a
chance to add his response (this does happen fairly frequently),
or his single line at the top is, once again, nothing more than
a "Me too!" Either way, I'll ignore it.

That's why the accepted procedure has two parts: edit the quoted
text, then add your reply at the end. Failure to edit the quoted
text does not in itself justify top posting. Two wrongs do not
make a right.

Niclas Carlsson

unread,
Apr 28, 2001, 5:51:48 PM4/28/01
to
g.p...@wanadoo.fr writes:

>On 05 Apr 01 12:59:17 -0800, "Charlie Gibbs" <cgi...@sky.bus.com>
>wrote:
><snip>
>> It's the linker
>>(ILINK32.EXE) that hangs. I've run many tests with both BCB4 and
>>the version 5 free download. Too bad - I'd love to get it running
>>under Wine myself.

>The following hack is fixing Bcb4. I don't know about bcc5.

Ok, I just had a sudden fit of boredom.

So I took a hypothetical look at a certain linker which has had some problems
with a certain non-emulator and I wrote a test program to exhibit the
problems. It seems that this linker looks for a large block of free memory in
a certain memory-range and then tries to find a maximally well-aligned
sub-block within it. This alignment procedure suffers from some problems.
The ironical thing is that setting "winver nt40" changes the memory
range it searches, but due to the alignment part it still causes the same
crash under wine.

I suppose this is to be considered a bug in the linker in question, but if
someone spots an acceptable fix in wine (which Alexandre would accept, that
is), then do by all means fix it. Or is there another way to get the linker in
question fixed (home patching doesn't seem elegant)? Anyone tried contacting
the vendor in question?

Anyway, here's my hackish test-app:

-------------------------------------------------------------------------------

/* VirtualQuery() test
*
* This program tries to find a well aligned block of size >= min_size
*
* It does this by finding a large block and then aggressively finding
* a good alignment within the block.
*/

#include <windows.h>
#include <stdio.h>

main() {

MEMORY_BASIC_INFORMATION mbi;
unsigned int i,address,diff,size,min_size,limit_hi,record_base,record_size;
unsigned int alignment,adjusted_base,base;

printf("VirtualQuery() test.\n\n");

address=0x80000000; /* Win9x: 0x80000000, WinNT: 0x400000 ??? */
limit_hi=0xffff0000;
min_size=0x2000000;
record_size=0;
record_base=0;

i=0;
do {
if (!VirtualQuery((const void *)address, &mbi, sizeof(mbi))) break;

address=(unsigned int)mbi.BaseAddress;
size=mbi.RegionSize;

printf("%3.3d-%8.8x: base=%8.8x, state=%8.8x, region_size=%8.8x\n",
i,address,address,mbi.State,size);

if (mbi.State==MEM_FREE && size>min_size && size>record_size) {
record_size=size;
record_base=address;
}
if (address+min_size-1 < address) break;
diff=(min_size-1<=size)?size:min_size-1;
if (address+diff <= address) break;
address+=diff;
i++;
} while (address < limit_hi);

if (!record_size) {
printf("\nProgram failed to find a large enough chunk. It shouldn't crash, though\n");
exit(1);
}
printf("\nRecord: base %8.8x, size %8.8x\n\n",record_base, record_size);
printf("Now aligning with min_size in thought:\n");

alignment=2;
adjusted_base=base=record_base;
while (adjusted_base+min_size < record_base+record_size) {
base=adjusted_base; /* save last good one for later use */
adjusted_base += alignment-1;
adjusted_base &= ~(alignment-1);
printf("Adjusted base (now trying): %8.8x (alignment=%8.8x)\n",
adjusted_base,alignment);
if (!alignment) {
printf("Oops. This shouldn't be happening (infinite loop).\n");
break;
}
alignment<<=1;
}

printf("\nFinal address: base %8.8x\n",base);
return;

}

-------------------------------------------------------------------------------

Running it under Win95 gives:


VirtualQuery() test.

000-80000000: base=80000000, state=00002000, region_size=00001000
001-81fff000: base=81fff000, state=00002000, region_size=000cf000
002-83ffe000: base=83ffe000, state=00010000, region_size=3bb52000
003-bfb50000: base=bfb50000, state=00001000, region_size=00001000

Record: base 83ffe000, size 3bb52000

Now aligning with min_size in thought:
Adjusted base (now trying): 83ffe000 (alignment=00000002)
Adjusted base (now trying): 83ffe000 (alignment=00000004)
Adjusted base (now trying): 83ffe000 (alignment=00000008)
Adjusted base (now trying): 83ffe000 (alignment=00000010)
Adjusted base (now trying): 83ffe000 (alignment=00000020)
Adjusted base (now trying): 83ffe000 (alignment=00000040)
Adjusted base (now trying): 83ffe000 (alignment=00000080)
Adjusted base (now trying): 83ffe000 (alignment=00000100)
Adjusted base (now trying): 83ffe000 (alignment=00000200)
Adjusted base (now trying): 83ffe000 (alignment=00000400)
Adjusted base (now trying): 83ffe000 (alignment=00000800)
Adjusted base (now trying): 83ffe000 (alignment=00001000)
Adjusted base (now trying): 83ffe000 (alignment=00002000)
Adjusted base (now trying): 84000000 (alignment=00004000)
Adjusted base (now trying): 84000000 (alignment=00008000)
Adjusted base (now trying): 84000000 (alignment=00010000)
Adjusted base (now trying): 84000000 (alignment=00020000)
Adjusted base (now trying): 84000000 (alignment=00040000)
Adjusted base (now trying): 84000000 (alignment=00080000)
Adjusted base (now trying): 84000000 (alignment=00100000)
Adjusted base (now trying): 84000000 (alignment=00200000)
Adjusted base (now trying): 84000000 (alignment=00400000)
Adjusted base (now trying): 84000000 (alignment=00800000)
Adjusted base (now trying): 84000000 (alignment=01000000)
Adjusted base (now trying): 84000000 (alignment=02000000)
Adjusted base (now trying): 84000000 (alignment=04000000)
Adjusted base (now trying): 88000000 (alignment=08000000)
Adjusted base (now trying): 90000000 (alignment=10000000)
Adjusted base (now trying): a0000000 (alignment=20000000)
Adjusted base (now trying): c0000000 (alignment=40000000)

Final address: base a0000000

-------------------------------------------------------------------------------

Whereas Wine gives:

VirtualQuery() test.

000-80000000: base=80000000, state=00010000, region_size=7fff0000

Record: base 80000000, size 7fff0000

Now aligning with min_size in thought:
Adjusted base (now trying): 80000000 (alignment=00000002)
Adjusted base (now trying): 80000000 (alignment=00000004)
Adjusted base (now trying): 80000000 (alignment=00000008)
Adjusted base (now trying): 80000000 (alignment=00000010)
Adjusted base (now trying): 80000000 (alignment=00000020)
Adjusted base (now trying): 80000000 (alignment=00000040)
Adjusted base (now trying): 80000000 (alignment=00000080)
Adjusted base (now trying): 80000000 (alignment=00000100)
Adjusted base (now trying): 80000000 (alignment=00000200)
Adjusted base (now trying): 80000000 (alignment=00000400)
Adjusted base (now trying): 80000000 (alignment=00000800)
Adjusted base (now trying): 80000000 (alignment=00001000)
Adjusted base (now trying): 80000000 (alignment=00002000)
Adjusted base (now trying): 80000000 (alignment=00004000)
Adjusted base (now trying): 80000000 (alignment=00008000)
Adjusted base (now trying): 80000000 (alignment=00010000)
Adjusted base (now trying): 80000000 (alignment=00020000)
Adjusted base (now trying): 80000000 (alignment=00040000)
Adjusted base (now trying): 80000000 (alignment=00080000)
Adjusted base (now trying): 80000000 (alignment=00100000)
Adjusted base (now trying): 80000000 (alignment=00200000)
Adjusted base (now trying): 80000000 (alignment=00400000)
Adjusted base (now trying): 80000000 (alignment=00800000)
Adjusted base (now trying): 80000000 (alignment=01000000)
Adjusted base (now trying): 80000000 (alignment=02000000)
Adjusted base (now trying): 80000000 (alignment=04000000)
Adjusted base (now trying): 80000000 (alignment=08000000)
Adjusted base (now trying): 80000000 (alignment=10000000)
Adjusted base (now trying): 80000000 (alignment=20000000)
Adjusted base (now trying): 80000000 (alignment=40000000)
Adjusted base (now trying): 80000000 (alignment=80000000)
Adjusted base (now trying): 00000000 (alignment=00000000)
Oops. This shouldn't be happening (infinite loop).

Final address: base 80000000

-------------------------------------------------------------------------------

I hope this sheds some light on the problems.

Nicke
--
"A witty saying proves nothing."
- Voltaire (1694-1778)

g.p...@wanadoo.fr

unread,
Apr 29, 2001, 9:15:40 AM4/29/01
to
On 29 Apr 2001 00:51:48 +0300, nkar...@abo.NO-SPAM-PLEASE.fi (Niclas
Carlsson) wrote:

>I suppose this is to be considered a bug in the linker in question,

Yes.
Thanks for the test app though, it makes things more clear.

> but if
>someone spots an acceptable fix in wine (which Alexandre would accept, that
>is), then do by all means fix it.

For the algorithm used the 0x80000000 value is a black hole from
which it can get out. I don't see any way for getting Alexandre
Julliard to accept a patch explicitly reserving this value out of
the range returned by VirtualQuery. I've had a much more generic
patch rejected as 'too specific' ;-)

The only way I see could be to do a better version of VirtualQuery
that would mark as reserved the memory allocated outside of Wine;
currently you can query the area where glibc is loaded, for example,
and Wine returns it as free; that's not very logical and IMHO a
good case could be made that VirtualQuery is bugged from this
point of view and it should try to detect these memory areas
and report them in VirtualQuery.
That would work only in Linux I guess (I don't know if there is
a portable way to get memory usage ?)

If something like that is done, it would be trivial to reserve the
blackhole area outside of Wine.
Unfortunately I have more important things to do for the next weeks.
If you want to do it, you're welcome :-)

Now if someone sees a simpler way...

Gerard

0 new messages