<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=50&amp;t=16973&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-12-16T23:12:08+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=50&amp;t=16973&amp;mode</id>
<entry>
<author><name><![CDATA[wrzaskun]]></name></author>
<updated>2016-12-16T23:12:08+01:00</updated>
<published>2016-12-16T23:12:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16973&amp;p=177702#p177702</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16973&amp;p=177702#p177702"/>
<title type="html"><![CDATA[Re: Atmel toolchain - multiple definition of `__ltsf2']]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16973&amp;p=177702#p177702"><![CDATA[
Mi z samym Wstring śmiga kompilacja, ale nie mam tych bibliotek Twoich z C++, dla ułatwienia może podlinkuj cały projekt, aby można było pobrać i odpalić.<br />Wstring.h includuje string.h<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=925">wrzaskun</a> — 16 gru 2016, o 23:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[savian86]]></name></author>
<updated>2016-12-03T21:21:14+01:00</updated>
<published>2016-12-03T21:21:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16973&amp;p=176401#p176401</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16973&amp;p=176401#p176401"/>
<title type="html"><![CDATA[Atmel toolchain - multiple definition of `__ltsf2']]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16973&amp;p=176401#p176401"><![CDATA[
Cześć,<br />Bawię się C++ w Eclipsie + Atmel toolchain i natrafiłem na pewien problem gdy chciałem użyć liczb zmiennoprzecinkowych mając podpiętą bibliotekę z arduino WString<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">avr-g++ -Wl,-Map,Encoder.map,--cref -mrelax -Wl,--gc-sections -lc -lm -lc -mmcu=atmega644p -o &quot;Encoder.elf&quot;  ./LCD_HD44780/Print.o ./LCD_HD44780/WString.o ./LCD_HD44780/lcd_hd44780.o  ./main.o   <br />c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(cmpsf2.o):/data2/home/toolsbuild/jenkins-knuth/workspace/avr8-gnu-toolchain/src/avr-libc/libm/fplib/cmpsf2.S:58: multiple definition of `__ltsf2'<br />c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_lt_sf.o):/data2/home/toolsbuild/jenkins-knuth/workspace/avr8-gnu-toolchain/src/gcc/libgcc/fp-bit.c:1269: first defined here<br />c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/bin/ld.exe: Disabling relaxation: it will not work with multiple definitions<br />c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(cmpsf2.o):/data2/home/toolsbuild/jenkins-knuth/workspace/avr8-gnu-toolchain/src/avr-libc/libm/fplib/cmpsf2.S:58: multiple definition of `__lesf2'<br />c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_le_sf.o):/data2/home/toolsbuild/jenkins-knuth/workspace/avr8-gnu-toolchain/src/gcc/libgcc/fp-bit.c:1290: first defined here<br />collect2.exe: error: ld returned 1 exit status<br />make: *** &#91;Encoder.elf&#93; Błąd 1</div><br /><br />struktura projektu jak widać jest prosta<br /><a href="https://obrazkiforum.atnel.pl/393/05f172f94cfe17a921dede1c5205b4ea.JPG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/393/05f172f94cfe17a921dede1c5205b4ea.JPG" alt="Obrazek" /></a><br /><br />Plik main<br />[syntax=cpp]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;LCD_HD44780/lcd_hd44780.h&quot;<br /><br />int main(void)<br />{<br />HD44780 lcd;<br /><br />lcd.init();<br />lcd.print(-7.4);<br />lcd.led(true);<br /><br />while(1);<br />}[/syntax]<br /><br />Klasa Print zredukowana:<br />[syntax=cpp]#ifndef Print_h<br />#define Print_h<br /><br />//#include &lt;inttypes.h&gt;<br />#include &lt;stdio.h&gt; // for size_t<br />//<br />#include &quot;WString.h&quot;<br />//#include &quot;Printable.h&quot;<br />#include &lt;string.h&gt;<br /><br />#define DEC 10<br />#define HEX 16<br />#define OCT 8<br />#define BIN 2<br /><br />class Print<br />{<br />  private:<br />    int write_error;<br />    size_t printNumber(unsigned long, uint8_t);<br />    size_t printFloat(double, uint8_t);<br />  protected:<br />    void setWriteError(int err = 1) { write_error = err; }<br />  public:<br />    Print() : write_error(0) {}<br /><br />    int getWriteError() { return write_error; }<br />    void clearWriteError() { setWriteError(0); }<br /><br />    virtual size_t write(uint8_t) = 0;<br />    size_t write(const char *str) {<br />      if (str == NULL) return 0;<br />      return write((const uint8_t *)str, strlen(str));<br />    }<br />    virtual size_t write(const uint8_t *buffer, size_t size);<br />    size_t write(const char *buffer, size_t size) {<br />      return write((const uint8_t *)buffer, size);<br />    }<br /><br />//    size_t print(const __FlashStringHelper *);<br />    //size_t print(const String &amp;);<br />    size_t print(const char&#91;&#93;);<br />    size_t print(char);<br />    size_t print(unsigned char, int = DEC);<br />    size_t print(int, int = DEC);<br />    size_t print(unsigned int, int = DEC);<br />    size_t print(long, int = DEC);<br />    size_t print(unsigned long, int = DEC);<br />    size_t print(double, int = 2);<br />//    size_t print(const Printable&amp;);<br />//<br />//    size_t println(const __FlashStringHelper *);<br />//    size_t println(const String &amp;s);<br />//    size_t println(const char&#91;&#93;);<br />//    size_t println(char);<br />//    size_t println(unsigned char, int = DEC);<br />//    size_t println(int, int = DEC);<br />//    size_t println(unsigned int, int = DEC);<br />//    size_t println(long, int = DEC);<br />//    size_t println(unsigned long, int = DEC);<br />//    size_t println(double, int = 2);<br />//    size_t println(const Printable&amp;);<br />//    size_t println(void);<br />};<br /><br />#endif[/syntax]<br /><br />kompilator nie rzuca błędem, gdy wywalę<br />#include &quot;WString.h&quot;<br />i wykluczę z projektu. Nie jestem w stanie sobie z tym poradzić, próbowałem do linkera dodać -l libm, jednak dostaje info, że nie odnaleziono.<br />Może ktoś z was już walczył z tym wcześniej?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=393">savian86</a> — 3 gru 2016, o 21:21</p><hr />
]]></content>
</entry>
</feed>